WCF Unicode UrlEncoded Получить не подходит красиво
Вопрос
У меня есть служба 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], чтобы увидеть, что это за символы. Это удалит переменную того, что может показывать вам отладчик или другой метод вывода.