mb_convert_encoding问题

bra*_*mon 6 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;
Run Code Online (Sandbox Code Playgroud)

输出:

UTF-8

UTF-8

更新,解决方案:

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

bor*_*ble 7

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

要使转换起作用,您需要告诉它(在本例中)原始编码.使用:

mb_convert_encoding($str, 'ISO-8859-1','utf-8');
Run Code Online (Sandbox Code Playgroud)

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


bra*_*mon -2

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