WCF Unicode UrlEncoded得到的不是很好

时间:2009-09-16 23:47:30

标签: wcf unicode rest get urldecode

我有一个RESTful WCF服务,它接受带有Unicode编码网址的GET动词。当我在服务器上获取数据时,Unicode字符被奇怪地翻译成小盒子。

我是否需要告诉服务合同才能获得Unicode UrlEncoded获取转换为漂亮的字符串?

这是我的合同:

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/Document/{Fragment}", RequestFormat = WebMessageFormat.Xml)]
Message GetDocumentFromSearchResult(string Fragment);

这是我传入的unicode示例: %FF%FE%22%00O%FF%FE%20%00King%FF%FE%20%00of%FF

我得到“王”和“好”,但其余的都是小字符串的小方块。

要成为解码问题吗?

2 个答案:

答案 0 :(得分:1)

你传递的内容看起来很奇怪:它似乎包含UTF-16用于“字符带字节顺序标记。这几乎肯定是一个问题,所以它看起来更像是你的问题输入的编码。

通常,UTF-8用于URL,因为这与协议更合适(不需要转义纯ASCII中的所有NUL字节)。这可能是您的服务所期望的,因此它无法正确解码(因为%FF%FE无效UTF-8)。

答案 1 :(得分:0)

使用Fragment [i]检查字符以查看实际字符是什么。这将删除调试器或其他输出方法可能向您显示的变量。