NuSOAP и тип контента

Невозможно выяснить, как заставить NuSOAP использовать UTF-8 для типа контента. он продолжает выплевывать «ISO-8859-1». вот соответствующие биты кода, которые я пробовал:

$soapclient=new soapclient($url1,'wsdl'); $soapclient->http_encoding='utf-8'; $soapclient->defencoding='utf-8'; if($soapclient->fault){ $retdata=$soapclient->fault; }else{ if($soapclient->getError()){ $retdata=$soapclient->getError(); }else{ $params=array($xmldata); $retdata=$soapclient->call($doit,$params,$url1,$url2); } } 

вот запрос:

 POST xxxxxxxxxxxx HTTP/1.0 Host: xxxxxxxxxxxxx User-Agent: NuSOAP/0.9.5 (1.123) Content-Type: text/xml; charset=ISO-8859-1 SOAPAction: "xxxxxxxxxxxxxxxxx" Content-Length: 1629 

Я даже зашел в nusoap.php и изменил пару строк, в которых был жестко закодирован ISO. Что мне не хватает?

Пытаться:

 $soapClient->soap_defencoding = 'UTF-8'; $soapClient->decode_utf8 = false; 

Также убедитесь, что вы отправляете данные, закодированные utf8, в противном случае это противоречие. (Utf8_encode ()).

использование SoapClient отлично подходит для меня.

Вот пример:

 <?php $client = new SoapClient( "http://localhost/app/ws/index.php?ws=data&wsdl", array('encoding' => 'UTF-8',) ); $data = $client->__soapCall("data.getData", array(1)); ?> 

Протестировано с помощью PHP 5.3.3.

+ Изменить

 $soapclient->defencoding='utf-8'; 

в

 $soapclient->soap_defencoding='utf-8'; 

Кажется, что в NuSOAP тип содержимого HTTP устанавливается в двух файлах:

 class.soap_server.php nusoap.php 

Сначала найдите строки в каждом файле:

 header("Content-Type: text/xml; charset=ISO-8859-1\r\n"); 

и замените их на

 header("Content-Type: text/xml; charset=UTF-8\r\n"); 

Он решит вашу проблему с HTTP-заголовками. Но я не уверен, что это решит любую проблему с кодировкой, поскольку я борюсь с проблемой кодирования UTF-8 в NuSOAP, это связано не только с заголовками HTTP.

Вот что я сделал, когда столкнулся с этой проблемой (через пару дней вытащил волосы):

Пошел по файлам NuSOAP и нашел переменную: $soap_defencoding которая по умолчанию соответствует ISO-8859-1 . Тем не менее, в строке, приведенной ниже, представлена ​​версия комментария, которая по умолчанию соответствует UTF-8 .

Я нашел это два места: nusoap_base.php и nusoap.php . Я обнаружил, что моя проблема исчезла, когда я изменил ее (обратный комментарий к двум строкам).

Проблема: клиент жалуется, что кодировка ответа – ISO-8859-1
Решение. Измените следующие строки в файлах nusoap.php : nusoap_base.php и nusoap.php :

из:
var $soap_defencoding = 'ISO-8859-1';
//var $soap_defencoding = 'UTF-8';
чтобы:
//var $soap_defencoding = 'ISO-8859-1';
var $soap_defencoding = 'UTF-8';

Для справки мое настольное приложение «Клиент -> VB.NET 3.5»

Двойная проверка фактического файла заключается в кодировке utf-8. Иногда проблема заключается в фактическом файле, и его кодирование обычно происходит с сервером Linux.

Попробуйте изменить всю библиотеку nusoap и контроллер и просмотреть файлы.

Измените пример файла ANSI на utf-8 или utf-8 без спецификации.

Благодарю.