none
如何支持中文查询 RRS feed

  • 问题

  • 使用WCF Data Services发布了服务,用如何uri地址能返回正确的数据:http://localhost:3026/Services/DataCenterService.svc/GetExamplesByName?name='Wanglei',但是当uri中查询条件包含中文时却不能返回结果,例如http://localhost:3026/Services/DataCenterService.svc/GetExamplesByName?name='光'。请问如何解决?
    2011年3月9日 8:47

答案

  • 在web.config中加入<globalization
               requestEncoding="GB2312"
               responseEncoding="GB2312"
       />解决上面的问题。但是对于模糊查询还是不行。例如可以正确处理:

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('Liu', Name) eq true

    但是查询不了

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('刘', Name) eq true

    请问有什么方法解决吗?

    参阅 System.Web.HttpUtility.UrlEncode/UrlDecode方法

    http://msdn.microsoft.com/zh-cn/library/4fkewx0t.aspx

    • 已标记为答案 Mog Liang 2011年3月16日 9:18
    2011年3月14日 6:43

全部回复

  • 使用WCF Data Services发布了服务,用如何uri地址能返回正确的数据:http://localhost:3026/Services/DataCenterService.svc/GetExamplesByName?name='Wanglei',但是当uri中查询条件包含中文时却不能返回结果,例如http://localhost:3026/Services/DataCenterService.svc/GetExamplesByName?name='光'。请问如何解决?

    把中文使用UTF-8编码一下。再传递
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年3月9日 10:16
    版主
  • 在web.config中加入<globalization
               requestEncoding="GB2312"
               responseEncoding="GB2312"
       />解决上面的问题。但是对于模糊查询还是不行。例如可以正确处理:

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('Liu', Name) eq true

    但是查询不了

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('刘', Name) eq true

    请问有什么方法解决吗?

    2011年3月10日 5:36
  • 在web.config中加入<globalization
               requestEncoding="GB2312"
               responseEncoding="GB2312"
       />解决上面的问题。但是对于模糊查询还是不行。例如可以正确处理:

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('Liu', Name) eq true

    但是查询不了

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('刘', Name) eq true

    请问有什么方法解决吗?


    模糊查询跟参数有什么关系,是你服务提供的功能的问题吧,数据查询支持模糊查询才可以啊
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年3月12日 11:58
    版主
  • 在web.config中加入<globalization
               requestEncoding="GB2312"
               responseEncoding="GB2312"
       />解决上面的问题。但是对于模糊查询还是不行。例如可以正确处理:

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('Liu', Name) eq true

    但是查询不了

    http://localhost:3026/Services/DataCenterService.svc/Examples?$filter=substringof('刘', Name) eq true

    请问有什么方法解决吗?

    参阅 System.Web.HttpUtility.UrlEncode/UrlDecode方法

    http://msdn.microsoft.com/zh-cn/library/4fkewx0t.aspx

    • 已标记为答案 Mog Liang 2011年3月16日 9:18
    2011年3月14日 6:43