6

我对 PHP 函数 mb_detect_encoding 有一些问题。我无法将其转换为 ISO-8859-1。有什么帮助吗?

代码:

$str = "åäö";
$encoding = mb_detect_encoding($str);
echo $encoding;
            
$encoding = mb_detect_encoding(mb_convert_encoding($str, "ISO-8859-1"));
echo $encoding;

输出:

UTF-8

UTF-8

更新,解决方案:

我将 mb_detect_order 更新为 array('UTF-8', 'ISO-8859-1') 并且它有效。

4

2 回答 2

8

你实际上并没有转换你的字符串。相反,对 的调用mb_convert_encoding并不假定原始字符串是 UTF-8 格式的。调用之前的字符串是一个字节序列,可能已经是 ISO-8859-1(并且会以不同的方式表示项目)。mb_detect_encoding您可以通过在字符串上使用而不是调用,bin2hex并在转换调用后查看字节序列来看到这种情况。你会看到字节序列没有改变。

要使转换工作,您需要告诉它(在这种情况下)原始编码。利用:

mb_convert_encoding($str, 'ISO-8859-1','utf-8');

如果您在此之后检查字节序列,您将看到发生了转换。

于 2012-08-22T12:41:02.833 回答
-2

我将 mb_detect_order 更新为 array('UTF-8', 'ISO-8859-1') 并且它有效

于 2012-08-22T12:37:21.470 回答