我有一个C#REST web服务暴露下面的方法:Unicode字符请求
[OperationContract]
[WebGet
(
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Files?id={ID}"
)
]
Stream GetFilesForID(string ID);
此方法提取从数据库中的信息,基于由用户指定的ID。此ID可以包含中文字符。
我的方法实现:
public Stream GetFilesForID(string ID)
{
ID = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(ID));
// and connect to database and
// stream back the list.
}
“ID” 依然不包含在里面中国文字。它看起来像:ã³ãã«-太é
我有客户端代码,用C++编写,并使用winHTTP库调用此REST Webservice方法。我也用小提琴测试了这个,但是我得到了相同的结果,即中文字符显示为怪异字符。
如果我有一个“POST”方法,请求正文具有Unicode字符,我的webservice方法获取请求正文没有任何问题。我甚至不需要这样做:Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(requestBody));
我在这里错过了什么?在发送HTTP GET请求之前,我需要做其他事吗?