Преодолеть проблемы с кодированием с PHP, SoapServer, UTF-8 и неанглийскими символами?

У меня проблемы с тем, чтобы PHP нормально работал с SoapServer + UTF-8. Каждый раз, когда кто-либо отправляет запрос Soap с неанглийскими символами (например, забавные кавычки, символы с диакритическими знаками и т. Д.), SoapServer выдает исключение с сообщением «Плохой запрос». Я пробовал декодировать запрос с помощью utf8_decode, и даже специальные символы HTML закодировали текст. У меня ничего не работает.

Я ищу точку в правильном направлении, потому что сейчас я потерялся.


person Community    schedule 03.04.2009    source источник


Ответы (2)


убедитесь, что SoapServer и SoapClient инициализируются с кодировкой UTF-8:

$client = new SoapClient("some.wsdl", array('encoding'=>'UTF-8'));
$server = new SoapServer("some.wsdl", array('encoding'=>'UTF-8'));

содержит ли XML запросов «забавные кавычки, символы с диакритическими знаками и т. д.» подтвердить?

person ax.    schedule 03.04.2009

Следующим очевидным шагом будет проверка того, что полученный вами запрос действительно закодирован как UTF-8. Сетевой сниффер, такой как WireShark (или даже небольшая работа с простым старым клиентом telnet, может работать), позволит вам проверить точные данные, передаваемые на сервер. Просмотрите его и убедитесь, что это действительно правильный код UTF-8.

person jalf    schedule 03.04.2009
comment
Использование utf8_encode () в ответе на мыло может помочь. stackoverflow.com/ вопросы / 1347019 / - person StuffMaster; 12.02.2010