Php – Fix “Input is not proper UTF-8, indicate encoding” error when loading xml

When loading xml files in php through simplexml_load_string or domDocument class, sometimes an error like this might popup

Warning: DOMDocument::loadXML(): Input is not proper UTF-8, indicate encoding !
Warning: simplexml_load_string(): Entity: line 93: parser error : Input is not proper UTF-8, indicate encoding !

The error occurs when the xml has some invalid characters that do not fit in the utf-8 character set. The solution to fix this error is quite simple. Just convert the entire xml string to ut8 first and then load.

$xml = simplexml_load_string( utf8_encode($rss) );

The utf8_encode function will convert the string to proper utf8 and invalid characters would be fixed, making the xml parseable by simplexml or domdocument.

Last Updated On : 26th March 2013

Subscribe to get updates delivered to your inbox

5 Comments + Add Comment

  • Thanks!
    It was very helpful for me too

  • Hi,
    Thank you for this article. It waz useful for me.

  • Can you tell me exactly what you did to fix this issue?

    • Hi Gina,

      Here’s my line of code: simplexml_load_string(utf8_encode(strip_tags($_product->getDescription())));

      In my case the product description contains some invalid chars and some html tags so I have to use the strip_tags function to remove them and then a can use the other 2 functions to proper encode the string.

      Hope this help’s you.

  • After much Googling, I finally find a straight answer to this error message. Thanks!

Leave a comment to Dean