1

我有一个奇怪的问题,以下代码:

$str = "נסיון" // <--- Hebrew chars
echo mb_detect_encoding ($str)."<br><br><br>";
$str = iconv (mb_detect_encoding($str),'UCS-2BE',$str);
echo mb_detect_encoding ($str)."<br><br><br>";

这将输出:

UTF-8

UTF-8

这段代码写在一个用 UTF-8 编码(使用 Notepad++)的文件中,没有 BOM,尝试其他编码但没有用。

我还尝试使用以下方法转换字符串:

$str = mb_convert_encoding($str,'UCS-2BE');

但这也没有用。有什么见解吗?

4

1 回答 1

1

mb_detect_order 的文档中,该函数确定了mb_detect_encoding测试不同编码的顺序:

mbstring当前实现了以下编码检测过滤器。如果以下编码存在无效的字节序列,编码检测将失败。UTF-8、UTF-7、ASCII、EUC-JP、SJIS、eucJP-win、SJIS-win、JIS、ISO-2022-JP

对于 ISO-8859-*,mbstring 始终检测为 ISO-8859-*。

对于 UTF-16、UTF-32、UCS2 和 UCS4,编码检测将始终失败。

因此,您无法使用 mb 函数检测第二个字符串的编码。

于 2013-08-08T13:04:40.990 回答