[英]mb_convert_encoding issues
我有一些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')并且它有效。
你实际上没有转换你的字符串。 相反,对mb_convert_encoding
的调用并不假设原始字符串是UTF-8。 调用之前的字符串是一个字节序列,可能已经是ISO-8859-1(并且会以不同的方式表示项目)。 您可以看到这种情况,而不是调用mb_detect_encoding
,使用字符串上的bin2hex
并在转换调用后查看字节序列。 你会看到字节序列没有改变。
要使转换起作用,您需要告诉它(在本例中)原始编码。 使用:
mb_convert_encoding($str, 'ISO-8859-1','utf-8');
如果在此之后检查字节序列,您将看到转换已发生。
我将mb_detect_order更新为数组('UTF-8','ISO-8859-1')并且它工作正常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.