Xpoint
   [напомнить пароль]

Сменить charset в XMLRPC

Метки: [без меток]
2009-02-06 12:28:29 [обр] Александр Петров(2/4)[досье]

Здравствуйте, как заставить сервер XML RPC отдавать и принимать данные в кодировке UTF-8 а не iso-8859-1?
Указание в скрипте:

header('Content-type: text/xml; charset=UTF-8');

срабатывает только на заголовок, а сам сервер упорно все кодирует iso-8859-1 и как видимо принимает в iso-8859-1
Ответ сервера:

...
Content-Type: text/xml; charset=UTF-8
....

<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
 <param>
  <value>
   <array>
    <data>
     <value>
      <string>system.listMethods</string>
     </value>
     <value>
      <string>system.methodHelp</string>
     </value>
     <value>
      <string>system.methodSignature</string>
     </value>
     <value>
      <string>system.describeMethods</string>
     </value>
     <value>
      <string>system.multiCall</string>
     </value>
     <value>
      <string>system.getCapabilities</string>
     </value>
     <value>
      <string>Livesearh</string>
     </value>
     <value>
      <string>Searh</string>
     </value>
    </data>
   </array>
  </value>
 </param>
</params>
</methodResponse>
спустя 6 минут [обр] Александр Петров(2/4)[досье]

Был не внимателен

$srv = xmlrpc_server_create();
xmlrpc_server_register_method($srv, "Livesearh", "srvLivesearh");
xmlrpc_server_register_method($srv, "Searh", "srvSearh");
$xmlRequest = $HTTP_RAW_POST_DATA;
$response = xmlrpc_server_call_method($srv, $xmlRequest, Null, array("encoding" => "utf-8"));
print $response;
xmlrpc_server_destroy($srv);

Теперь все верно, только все равно в JavaScript русские буквы не показывает

спустя 1 минуту [обр] Александр Петров(2/4)[досье]
<string>&#209;&#143;&#209;&#143;&#209;&#143;&#208;&#191;&#208;&#176;</string>
спустя 15 минут [обр] Александр Петров(2/4)[досье]

Оказывается там по умолчанию стоит escaping = non-ascii

$response = xmlrpc_server_call_method($srv, $xmlRequest, Null, array('encoding' => 'utf-8', 'escaping'=>'non-print'));

Вот хороший ресурс по XML RPC подробнее чем справка PHP http://xmlrpc-epi.sourceforge.......t=php_api#xmlrpc_server_create

Без него ни за что бы до этого не догадался. Извините что пошумел. Может кому поможет еще. Спасибо

спустя 23 часа [обр] Александр Петров(2/4)[досье]
оказывается выше приведенный пример не верно воспринимает некоторые русские буквы, вот так пока не нашел ошибок в русском языке
$response = xmlrpc_server_call_method($srv, $xmlRequest, Null, array('encoding' => 'utf-8', 'escaping'=>'markup'));
Powered by POEM™ Engine Copyright © 2002-2005