WCF Unicode UrlEncoded Получить не подходит красиво - PullRequest
0 голосов
/ 17 сентября 2009

У меня есть служба RESTful WCF, которая принимает глаголы GET с URL-адресами в кодировке Unicode. Символы Unicode странно переводятся в маленькие прямоугольники, когда я получаю данные на сервер.

Есть ли что-то, что я должен сказать контракту на обслуживание, чтобы Юникод UrlEncoded Get переводил в красивые строки?

Вот мой контракт:

[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 ]

1 голос
/ 20 сентября 2009

То, что вы передаете, выглядит странно: в нем содержится UTF-16 для "символа с метками порядка байтов . Это почти наверняка проблема, поэтому она больше похожа на проблему с вашей кодировкой ввода.

Обычно UTF-8 используется для URL-адресов, поскольку это намного лучше согласуется с протоколом (нет необходимости экранировать все байты NUL в чистом ASCII). Вероятно, это будет то, что ожидает ваш сервис, поэтому он не декодируется правильно (так как% FF% FE не является допустимым UTF-8).

0 голосов
/ 17 сентября 2009

Изучите символы, используя Fragment [i], чтобы увидеть, что это за символы. Это удалит переменную того, что может показывать вам отладчик или другой метод вывода.

...