mb_convert_encoding问题

时间:2012-08-22 11:48:46

标签: php encoding utf-8

我的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更新为数组('UTF-8','ISO-8859-1')并且有效。

2 个答案:

答案 0 :(得分:7)

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

要使转换生效,您需要告诉它(在本例中)原始编码。使用:

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

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

答案 1 :(得分:-2)

我将mb_detect_order更新为数组('UTF-8','ISO-8859-1')并且工作正常