Вопрос

У меня есть служба 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

Я получаю "Король" и "из" хорошо, но остальные строки - маленькие квадраты.

Должна быть проблема с расшифровкой ??

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top