I'm trying to get Thai characters from a website. I've tried:
$rawChapter = file_get_contents("URL");
$rawChapter = mb_convert_encoding($rawChapter, 'UTF-8', mb_detect_encoding($rawChapter, 'UTF-8, ISO-8859-1', true));
When I do this then the characters come back like:
¡ÅѺ˹éÒáá¾ÃФÑÁÀÕÃìÀÒÉÒä·Â©ºÑº
But if I take the source of the page I'm trying to load and save that into my own .htm file on my localhost as a utf8 file then it loads the Thai characters correctly. Only when I try to load it from the site directly it breaks.
How can I fix this? What could be the problem?
I've also tried adding this context:
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => implode("\r\n", array(
'Content-type: application/x-www-form-urlencoded',
'Accept-Language: en-us,en;q=0.5',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'
))
)
));
I've tried adding it alone, I've tried adding it with the mb_convert_encoding()... I feel like I've tried all combinations of this stuff and no success.
Change your
Accept-Charset
toUTF-8
because ISO-8859-1 does not support Thai characters. If you are running your PHP script on a windows machine, you may also use thewindows-874
charset, and you may also try adding this header :But in most cases, UTF-8 will handle pretty much most characters or character sets without any other declaration.
** UPDATE **
Very strange, but this works for me.
Apparently, I was wrong for this one about UTF-8. See here for more details. Though you can still have an UTF-8 output :