SOAP-ERROR:Encoding:string ...不是有效的utf-8字符串

Gab*_*eri 6 encoding soap web-services zend-framework

嗨,我有一个使用Zend Framework构建的Web服务.其中一种方法旨在发送有关订单的详细信息.我遇到了一些编码问题.返回的值之一包含以下内容:

Jaime Torres Bodet#322-A Col. 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>
Run Code Online (Sandbox Code Playgroud)

我应该怎么解决这个问题?

谢谢

Vac*_*ara 17

如何更改编码设置:

服务器:

$server = new SoapServer("some.wsdl", array('encoding'=>'ISO-8859-1')); // for 'windows-1252' too
Run Code Online (Sandbox Code Playgroud)

客户:

$server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1')); // for 'windows-1252' too
Run Code Online (Sandbox Code Playgroud)

...然后转换自动完成到UTF-8,我有类似的问题,所以这对我有帮助,所以它经过测试


Mar*_*rek 10

今天我遇到了同样的问题 - 导致该问题的代码是:

$request->Text = substr($text, 0, 40);
Run Code Online (Sandbox Code Playgroud)

将substr更改为mb_substr似乎解决了这个问题:

$request->Test = mb_substr($text, 0, 40, 'utf8');
Run Code Online (Sandbox Code Playgroud)