UTF-8空间在Chrome中显示为一个框


UTF-8 Space showing as a box in Chrome

在下面的网页截图中,这是一些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);
}
相关文章: