c # с SOAP - проблема с кодировкой utf-8 - PullRequest
0 голосов
/ 17 апреля 2011

Я использую автоматическое преобразование из WSDL в C #, все работает отдельно от кодирования, всякий раз, когда У меня есть нативные символы (например, «ł» или «ó»), я получаю «??» вставил их в строковые поля («G ???? wny» вместо «Główny»). Как с этим бороться? Сервер отправляет документ с правильной кодировкой с заголовком.

РЕДАКТИРОВАТЬ: я заметил в Wireshark, что пакеты, отправленные ОТ меня, имеют спецификацию, но пакеты отправляют мне, не имеют - может быть, это корень проблемы?

Ответы [ 2 ]

0 голосов
/ 14 июня 2011

Проблема была на стороне сервера с отправленным параметром Content-Type в заголовке (он был установлен как "text / xml"). Бывает, что для utf-8 это ДОЛЖНО быть "text / xml; charset = utf-8", другие методы, такие как размещение спецификации, некорректны (согласно RFC 3023). Больше информации здесь: http://annevankesteren.nl/2005/03/text-xml

0 голосов
/ 26 апреля 2011

Так что, может быть, поможет следующее:

Я уверен, что сделал:

В файле PHP веб-сервиса после подключения к базе данных Mysql я вызываю:

mysql_query ("SET CHARSET utf8");

mysql_query ("SET NAMES utf8 COLLATE utf8_polish_ci");

Второе, что я сделал:

В том же файле PHP, Я добавил utf8_encode к сервису в переменной $ POST_DATA:

$ server-> сервис (utf8_encode ($ POST_DATA));

в class.nusoap_base.php я изменил:

`// var $ soap_defencoding = 'ISO-8859-1';

var $ soap_defencoding = 'UTF-8'; `

и olso в nusoap.php такие же, как указано выше:

// var $ soap_defencoding = 'ISO-8859-1';

var $ soap_defencoding = 'UTF-8';

и в файле nusoap.php снова:

var $ decode_utf8 = true;

Теперь я могу отправлять и получать правильно закодированные данные.

Надеюсь, это поможет. С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...