Тема: Веб сервис и кодировка UTF-8

Создан:Alexey Sosnov 08/06/2007 03:00 PM
Модифицирован:Alexey Sosnov 08/06/2007 03:30 PM
Папка:
04. Специфичное "русскому" Lotus Notes, 07. Разработка Web-приложений, 09. Администрирование Notes & Domino
Тип сообщения:
Вопрос

Сообщение:

Всем привет

Написал простой web service на lotus script, под eclipse (в Web Services Explorer) данные получаю нормально, русские буквы отображаются корректно
при обращении же к веб сервису из PHP происходят какая то ерунда - вместо русских букв приходят кракозябры.
При прогоне через прокси программу (TCP Trace) данные также отображаются кракозябрами, следовательно, приходят в неверной кодировке.

Не подскажите, как решить такую проблему?
Domino Server 7, RUS pack НЕ стоит.

вот пример запроса-ответа в eclipse и в tcptrace:

------------------

Eclipse:

запрос

<?xml version="1.0" encoding="UTF-8" ?>
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <ns0:GETEMPLOYEEBYBIRTHDATE xmlns:ns0="urn:DefaultNamespace" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<REQUESTDATE xsi:type="xsd:string">02.08</REQUESTDATE>
<SEPARATOR xsi:type="xsd:string">,</SEPARATOR>
</ns0:GETEMPLOYEEBYBIRTHDATE>
</soapenv:Body>
</soapenv:Envelope>

ответ

- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <ns1:GETEMPLOYEEBYBIRTHDATEResponse xmlns:ns1="urn:DefaultNamespace" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<GETEMPLOYEEBYBIRTHDATEReturn xsi:type="xsd:string">Соколов Роман Петрович,Пленсковский Андрей Юрьевич,Артамонов Николай Юрьевич,Ефимова Мария Алексеевна,Терехова Антонина Михайловна,Савиных Алексей Борисович,Ческидова Диана Маликовна,Крылатов Сергей Юрьевич</GETEMPLOYEEBYBIRTHDATEReturn>
</ns1:GETEMPLOYEEBYBIRTHDATEResponse>
</soapenv:Body>
</soapenv:Envelope>


-----------

tcp trace:

запрос

POST /DevelopLEI/employers.nsf/getEmployeeData?OpenWebService HTTP/1.1
Host: localhost:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 495
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: IBM Web Services Explorer
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Connection: close

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns0:GETEMPLOYEEBYBIRTHDATE xmlns:ns0="urn:DefaultNamespace" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<REQUESTDATE xsi:type="xsd:string">02.08</REQUESTDATE>
<SEPARATOR xsi:type="xsd:string">,</SEPARATOR>
</ns0:GETEMPLOYEEBYBIRTHDATE>
</soapenv:Body>
</soapenv:Envelope>

ответ

HTTP/1.1 200 OK
Server: Lotus-Domino
Date: Mon, 06 Aug 2007 11:59:57 GMT
Connection: close
Content-Type: text/xml; charset=utf-8
Content-Length: 972
Content-Language: ru

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<soapenv:Body>
<ns1:GETEMPLOYEEBYBIRTHDATEResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:DefaultNamespace"><GETEMPLOYEEBYBIRTHDATEReturn xsi:type="xsd:string">Соколов Роман ÐYеN‚N€Ð¾Ð²Ð¸N‡,ÐYленNÐºÐ¾Ð²NÐºÐ¸Ð¹ АндN€ÐµÐ¹ ЮN€NŒÐµÐ²Ð¸N‡,АN€N‚амонов Николай ЮN€NŒÐµÐ²Ð¸N‡,ЕN„имова МаN€Ð¸N АлекNÐµÐµÐ²Ð½Ð°,ТеN€ÐµN…ова АнN‚онина МиN…айловна,СавинN‹N… АлекNÐµÐ¹ БоN€Ð¸NÐ¾Ð²Ð¸N‡,ЧеNÐºÐ¸Ð´Ð¾Ð²Ð° Диана Маликовна,ÐsN€N‹Ð»Ð°N‚ов СеN€Ð³ÐµÐ¹ ЮN€NŒÐµÐ²Ð¸N‡</GETEMPLOYEEBYBIRTHDATEReturn></ns1:GETEMPLOYEEBYBIRTHDATEResponse>
</soapenv:Body>
</soapenv:Envelope>


Иерархия документов данной дискуссии:
Веб сервис и кодировка UTF-8 (Alexey Sosnov) (06.08.2007 15:00:11)
.... я не сталкивался с сервисами..., может виноват encoding (т.е. mime преобразование) - тогда надо получаемый декодить поток (Mikhail Cholokov) (06.08.2007 15:47:28)
........ Вы имеете ввиду в php декодить? (Alexey Sosnov) (06.08.2007 15:53:31)
............ ну если получаете поток в нем - то им и декодить (Mikhail Cholokov) (06.08.2007 16:24:43)
................ Действительно, проблема оказалась в кривой библиотеке доя работы с вебсервисами в php :) (-) (Alexey Sosnov) (07.08.2007 9:23:02)
.... то же самое + Java (Andrew S Golembiovskiy) (22.10.2008 11:21:53)
........ Похоже разобрался - нужно использовать InputStreamReader (Andrew S Golembiovskiy) (22.10.2008 16:59:07)
............ Немного изменил библиотеку UrlFetcher (+) (Andrew S Golembiovskiy) (23.10.2008 14:22:14)


Разработчикам и администраторам: курсы, книги, сертификация