xml – Overcome Encoding Problems with PHP, SoapServer, UTF-8, and non English Characters?-ThrowExceptions

Exception or error:

I’m having problems getting PHP to play nicely with SoapServer + UTF-8. Anytime anyone sends a Soap Request with non english characters (i.e. funny quotes, accented characters, etc) the SoapServer throws an exception saying “Bad Request.” I’ve tried decoding the request with utf8_decode and even HTML Special Characters encoded the text. Nothing is working for me.

I’m looking for a point in the right direction because I’m lost at the moment.

How to solve:

make sure both SoapServer and SoapClient are initialized with UTF-8 encoding:

$client = new SoapClient("some.wsdl", array('encoding'=>'UTF-8'));
$server = new SoapServer("some.wsdl", array('encoding'=>'UTF-8'));

does the XML of the requests with the “funny quotes, accented characters, etc.” validate?


An obvious next step would be to verify that the request you receive is actually encoded as UTF-8. A network sniffer like WireShark (or even just a bit of work with a plain old telnet client could work) would let you examine the exact data passed to the server. Look through that and verify that it is actually valid UTF-8.

Leave a Reply

Your email address will not be published. Required fields are marked *