специальный символ в запросе мыла 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-ERROR: Кодировка: строка моей строки с ¥ не является допустимой строкой utf-8.....

Какие-либо предложения?


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


Ответы (1)


Вы передаете YEN SIGN в кодировке UTF-8, но сообщаете служба, закодированная как ISO-8859-1.

В UTF-8 этот символ кодируется двумя байтами: 0xC2 и 0xA5.

В ISO-8859-1 эти два байта декодируются в два отдельных символа, ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A С CIRCUMFLEX и ЗНАК ЙЕНЫ соответственно.

Чтобы исправить это, попробуйте применить utf8_decode к значению, прежде чем использовать его в вызове SOAP.

person Peter Bailey    schedule 30.06.2010