0

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

为了让 Unicode UrlEncoded Gets 转换成漂亮的字符串,我必须告诉服务合同做些什么吗?

这是我的合同:

[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

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

一定是解码问题??

4

2 回答 2

1

您传入的内容看起来很奇怪:它似乎包含带有字节顺序标记的 " 字符的 UTF-16 。这几乎可以肯定是一个问题,因此它看起来更像是您的输入编码问题。

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

于 2009-09-19T23:50:30.183 回答
0

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

于 2009-09-17T00:07:27.033 回答