在下面的网页截图中,这是一些UTF-8文本,它在firefox中完美显示,但在Chrome中,有一个框代替了空格。此外,如果我在Chrome中将缩放级别提高1,问题就会消失。
如何用PHP修复它?
Chrome问题
FireFox Fine
[更新]更多信息:
$s = utf8_to_unicode_code($desc);
for($i = 1; $i < 20; $i++) {
echo $s[$i]."'n";
}
function utf8_to_unicode_code($utf8_string)
{
$expanded = iconv("UTF-8", "UTF-32", $utf8_string);
return unpack("L*", $expanded);
}
上述代码输出:
-131072
1006632960
1644167168
1040187392
118030336
906559488
805896192
604569600
536870912
352911360
1191772160
940113920
536870912
973078528
536870912
671678464
805896192
1191772160
34144256
我们可以用它扣减吗?
您的第一个字符是0xfffe0000
,它是一个字节顺序标记。显然,它以某些字体/字号显示,而不是其他字体/字号。
要在输出之前将其从字符串中删除,例如,您可以查看此处的示例,该示例在字符串中检测到它,并在必要时将其删除。
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 == strncmp($str, $bom, 3)) {
// echo "BOM detected - file is UTF-8'n";
$str = substr($str, 3);
}