специален знак в заявката за сапун на php, неправилно показан в пакета xml out

Използвам уеб услуга, която в заявката ми включва символ ¥ (chr 0165). Зададох кодирането на моя сапунен клиент на:

$soap = new MySoapClient('address.wsdl', array('trace' =› 1, 'encoding'=›'ISO-8859-1'));

Но когато погледна изходящия си пакет сапун, ¥ се променя на Â¥

Не съм добър в кодирането, но опитах редица различни комбинации, използвайки UTF8-ENCODE и т.н., без резултат... Просто искам моят пакет за изходящ сапун да показва ¥ за всеки ¥ в моята низова променлива.

Актуализация:

Сигурно все още правя нещо нередно...когато добавя utf8_decode(моя низ с ¥) и оставям кодирането, както е посочено:

$soap = new MySoapClient('address.wsdl', array('trace' =› 1, 'encoding'=›'ISO-8859-1'));

Все още получавам моя низ с ¥ като параметър в изходящия си сапунен пакет.

ако пропусна частта за кодиране в:

$soap = new MySoapClient('address.wsdl', array('trace' =› 1, 'encoding'=›'ISO-8859-1'));

в комбинация с utf8_decode(моят низ с ¥) получавам следната сапунена грешка:

SOAP-ГРЕШКА: Кодиране: моят низ с ¥ не е валиден utf-8 низ.....

Някакви предположения?


person Pablo    schedule 30.06.2010    source източник


Отговори (1)


Подавате UTF-8 кодиран YEN SIGN, но казвате услугата, която е кодирана като ISO-8859-1.

В UTF-8 този знак е кодиран в два байта: 0xC2 и 0xA5.

В ISO-8859-1 тези два байта са декодирани в два отделни знака, ЛАТИНИЦА ГЛАВНА БУКВА A С ЦИРКУМФЛЕКС и YEN SIGN съответно.

За да коригирате това, опитайте да приложите utf8_decode към стойността, преди да я използвате в SOAP извикването.

person Peter Bailey    schedule 30.06.2010