php soap请求中的特殊字符错误地显示在xml out包中

时间:2010-06-30 19:04:55

标签: php soap encoding character

我正在使用我的请求中包含¥符号(chr 0165)的网络服务。我已将我的soap客户端上的编码设置为:

$ soap = new MySoapClient('address.wsdl',    数组('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:编码:字符串“my stringwith¥”不是有效的utf-8字符串.....

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您正在提供UTF-8编码的YEN SIGN,但告诉服务其编码为ISO-8859-1。

在UTF-8中,该字符被编码为两个字节:0xC20xA5

在ISO-8859-1中,这两个字节被解码分别成为两个独立的字符LATIN CAPITAL LETTER A WITH CIRCUMFLEXYEN SIGN

要解决此问题,请尝试在将值utf8_decode应用于SOAP调用之前将其应用于该值。