我正在使用我的请求中包含¥符号(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字符串.....
有什么建议吗?
答案 0 :(得分:1)
您正在提供UTF-8编码的YEN SIGN,但告诉服务其编码为ISO-8859-1。
在UTF-8中,该字符被编码为两个字节:0xC2
和0xA5
。
在ISO-8859-1中,这两个字节被解码分别成为两个独立的字符LATIN CAPITAL LETTER A WITH CIRCUMFLEX和YEN SIGN。
要解决此问题,请尝试在将值utf8_decode应用于SOAP调用之前将其应用于该值。