您好我使用Zend Framework构建了一个Web服务。其中一种方法旨在发送有关订单的详细信息。我遇到了一些编码问题。返回的值之一包含以下内容:
Jaime Torres Bodet#322-A。Lomas deSantaMaría
Web服务正在返回以下错误:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>SOAP-ERROR: Encoding: string 'Jaime Torres Bodet #322-A Col. Lomas de Santa Mar\xc3...' is not a valid utf-8 string</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我应该怎么解决这个问题?
由于
答案 0 :(得分:16)
如何更改编码设置:
SERVER:
$server = new SoapServer("some.wsdl", array('encoding'=>'ISO-8859-1')); // for 'windows-1252' too
客户端:
$server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1')); // for 'windows-1252' too
...然后转换自动完成到UTF-8,我有类似的问题,所以这对我有帮助,所以经过测试
答案 1 :(得分:9)
今天我遇到了同样的问题 - 导致该问题的代码是:
$request->Text = substr($text, 0, 40);
将substr更改为mb_substr似乎解决了这个问题:
$request->Test = mb_substr($text, 0, 40, 'utf8');
答案 2 :(得分:4)
问题在于í!= i。在请求中使用之前,尝试将字符串转换为UTF-8。它可能看起来像这样:
$string = iconv('windows-1252', 'UTF-8', $string);
答案 3 :(得分:2)
答案 4 :(得分:0)
我发现在我的情况下,字符串的编码不是问题,而是文件本身没有保存为UTF-8。即使使用UTF-8编码进行显式保存也无济于事。
对我而言,它可以插入一个带有UTF-8字符的评论
// Å