NuSOAP и кириллица

dvp

Новичок
NuSOAP и кириллица

Здравствуйте.

Решил воспользоваться Google APIs для поиска и столкнулся со следующей проблемой.

Делаю запрос к Google через NuSOAP:
PHP:
  $parameters = array('key' => 'myKey',
  'q' => 'site:loglink.ru time',
  'start' => $start,
  'maxResults' => PER_PAGE,
  'ie' => 'utf-8',
  'oe' => 'utf-8',
  'filter' => false,
  'restrict' => '',
  'safeSearch' => false,
  'lr' => '');
$soap = new SoapClient('http://api.google.com/GoogleSearch.wsdl', 'wsdl');
$result = $soap->call('doGoogleSearch', $parameters);
foreach($result['resultElements'] as $row)
  echo $row['title'];
На выходе получаю верный результат, но символы кириллицы заменены на '?' .
Посмотрел Снифером - в ответ приходит нормальный UTF-8, а NuSOAP выдаёт знаки вопроса. В чём может быть проблема?
 

slach

Новичок
в том, что NuSOAP гдето внутри себя явно пытается перегодировать

посмотрю какой Content-type: отдается и какой у него charset выставлен

чем кстати вызвано необходимость использования NuSOAP вместо нормального SOAP клиента в php5 ?
 

dvp

Новичок
>чем кстати вызвано необходимость использования NuSOAP вместо нормального SOAP клиента в php5 ?
На сервере стоит PHP4.

Что касаемо кодировок:

Запрос уходит так:
Код:
POST /search/beta2 HTTP/1.0
Content-Type: text/xml; charset=ISO-8859-1
...
<?xml version="1.0" encoding="ISO-8859-1"?>
А возвращается вот так:

Код:
HTTP/1.0 200 OK
Content-Type: text/xml; charset=utf-8
...
<?xml version='1.0' encoding='UTF-8'?>
Как можно вообще управлять кодировкой передаваемых данных в NuSOAP?

Или может проще сделать запрос и приём ответа без NuSOAP: открыть сокет, послать туда, то, что нужно и принять также?

-~{}~ 04.09.05 20:44:

Разобрался с входной кодировкой.
PHP:
$soap->decode_utf8 = false;
Но вот данные, которые я посылаю в запросе, всё равно идут в ISO-8859-1 и соответственно не правильно интерпретируются
 

ol777

Новичок
От версии библиотеки зависит. В последней (1.95) есть функция character_data($parser, $data) в классе soap_parser.
В ней используется стандартное перекодирование $data = utf8_decode($data);. Его трем, пишем свое (utf82win1251).
 
Сверху