【问题标题】:PHP Unicode character questionsPHP Unicode 字符问题
【发布时间】:2011-02-27 23:14:10
【问题描述】:

这是我找到的一个链接,它甚至有一个我需要在我的其他项目中玩的角色。

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 中看到这些字符。 但我的 windows 框不想显示它们。我已经在 chrome 和 firefox 中对其进行了测试。我需要告诉浏览器正确查看它们吗?还是操作系统修改?

【问题讨论】:

    标签: php utf-8


    【解决方案1】:

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

    0x2446 = 9286

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

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

    如果您使用任何 Unicode 编码,您始终可以将字符直接放在页面上,因此您不必使用实体。

    【讨论】:

      【解决方案2】:

      确切地说,entity reference 也不是。 &amp;amp; 是引用 entity named amp 的实体引用,其定义为:

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

      在这里您可以看到实体的值只是另一个引用:&amp;#38;

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

      【讨论】:

      • 你还没有告诉我你的 Gravatar 来自哪里。我需要开始一个元问题吗? :)
      • 是什么导致不同计算机上的浏览器翻译它们的方式不同?
      • @Pekka:我关于更仔细阅读泰坦尼克号的提示没有帮助吗?
      • @user271619:字符引用仅描述字符,即文本信息的原子。此信息与字符的视觉表示(glyphs)是分开的。并且计算机需要具有包含这些字形的fonts 才能显示文本。如果使用的字体不包含某个字符的字形,或者没有任何其他字体包含它,它会显示一个替换字符或字形。在由 REPLACEMENT CHARACTER U+FFFD . 表示的 Unicode 中
      • @Gumbo 不!我确实解决了几个问题,但没有抓住线索。从那以后唯一反复出现的主题……永远是“Die endgültige Teilung Deutschlands ist unser Auftrag”。没有海狸:)
      【解决方案3】:

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

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

      【讨论】:

      • 似乎就是这样。我的 windows 框上的字体不如我的 Mac 字体那么耐用。出于好奇,去哪里更新他们的字体?
      • 您可以购买它们,从 Internet 下载免费字体,安装可选的操作系统包,安装带有其他字体的应用程序...
      猜你喜欢
      • 1970-01-01
      • 2011-11-12
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2011-10-11
      • 1970-01-01
      • 2016-07-06
      相关资源
      最近更新 更多