Search code examples
phpweb-servicessoapencodingzend-framework

SOAP-ERROR: Encoding: string ... is not a valid utf-8 string


Hi I have a web service built using the Zend Framework. One of the methods is intended to send details about an order. I ran into some encoding issue. One of the values being returned contains the following:

Jaime Torres Bodet #322-A Col. Lomas de Santa María

The webservice is returning the following fault:

<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>

How should I go about this problem?

Thanks


Followup: Problem was due to a truncated string by the database. The field was set to VARCHAR(50) and it truncated exactly in the middle of the encoded value.


Solution

  • Today I run into same problem - the code which caused that problem was:

    $request->Text = substr($text, 0, 40);
    

    changing substr to mb_substr seems to solve the issue:

    $request->Test = mb_substr($text, 0, 40, 'utf8');