PHP Unicode字符问题

时间:2011-02-27 23:14:10

标签: php utf-8

这是我找到的一个链接,甚至还有我需要为我的其他项目使用的角色。

http://www.fileformat.info/info/unicode/char/2446/index.htm

该页面上有一个标题为“编码”的框。我想知道一些行。

我显然需要一个关于此类事情的课程,但我想知道“HTML实体(十进制)”和“HTML实体(十六进制)”之间的区别。

有趣的是,这让我感到困惑,我把这些字符扔在网页上,它们显示得很好。但是我没有在php页面中指定任何UTF-8编码。

<?php
$string1 = '&#x2446;';
$string2 = '&#9286;';

echo $string1;
echo '<br>';
echo $string2;
?>

浏览器是否知道如何自动显示? 为了让它更奇怪,我只能在我的Mac上看到那些角色,在Firefox中。 但我的窗户框不想显示它们。我用chrome和firefox测试过它。我是否需要告诉浏览器正确查看它们?或者它是一个操作系统修改?

3 个答案:

答案 0 :(得分:2)

它们都是有效的数字HTML实体,浏览器确实知道如何解码它们。区别在于第一个是hexadecimal数字,而后者是十进制数。

0x2446 = 9286

请注意,0x表示十六进制。

另请注意,最好始终让服务器明确指定编码。 W3C explains怎么做。 UTF-8是一个不错的选择。

如果您使用任何Unicode编码,您始终可以将该字符放在页面上,这样您就不必使用实体。

答案 1 :(得分:2)

确切地说,两者都不是entity reference&amp;是一个实体引用,引用定义为的entity named amp

<!ENTITY amp     CDATA "&#38;"   -- ampersand, U+0026 ISOnum -->

在这里,您可以看到实体的价值只是另一个参考:&#38;

&#x2446;&#9286;“只是”character references(确切地说numeric character references)并通过指定{{3中的字符的代码位置来引用字符,即Unicode字符集。

答案 2 :(得分:0)

您可以在任何编码和实践中使用任何“HTML实体”,如果您已经安装了适当的字体,每个浏览器都可以正常工作。好吧,它是为显示当前编码中未包含的字符而创建的。在您的情况下它看起来您必须在Windows框中安装一些字体。

另一方面,它几乎与PHP无关。