我需要能够检测字符串的编码,但mb_detect_encoding不能正常工作。
我从文件(file_get_contents
)获取字符串,我知道给我带来麻烦的文件是UTF-16 LE。但是,从文档中我理解的是,检测此编码是不可能的(mb_detect_order :"对于UTF-16,UTF-32,UCS2和UCS4,编码检测将始终失败。" )。
如何在PHP中以值得信赖的方式获取字符串的编码?任何可能的编码?
我试图解决这个问题已经失去了几个小时,但我找不到好的资源。我希望能够自动执行此操作,因此如果我的文件更改其编码,我的程序将能够处理它(我从其他网站获取该文件)。
我试过这个没有成功,它告诉我UTF-8:
mb_detect_encoding($proper_string, 'UTF-16LE,UCS-2,UTF-8,ASCII', true)
我也试过这个:
echo 'mb_check_encoding($fileContents, \'UTF-8\'): ' . mb_check_encoding($fileContents, 'UTF-8') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16\'): ' . mb_check_encoding($fileContents, 'UTF-16') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16LE\'): ' . mb_check_encoding($fileContents, 'UTF-16LE') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UCS-2\'): ' . mb_check_encoding($fileContents, 'UCS-2') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'ISO-8859-1\'): ' . mb_check_encoding($fileContents, 'ISO-8859-1') . "\n";
//true