1

我需要能够检测到字符串的编码,但 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
4

0 回答 0