【问题标题】:Unicode symbols coming wrongUnicode 符号出错
【发布时间】:2011-03-01 16:00:58
【问题描述】:

显然,我一定在做一些愚蠢的事情。下标和上标的 unicode 图表显示 #00B2 是上标 2,但我得到了乱码输出。 0078 是 x,但我得到 N,而 0120 是 x。我读错手册了吗?


编辑

$x = 'N';

print html_entity_decode($x, ENT_NOQUOTES, 'UTF-8') . "\n";

【问题讨论】:

  • 你能发布一些代码吗?您使用的是哪种编码?
  • 对不起,罗伯特,所有读心者都在度假

标签: php html unicode entity


【解决方案1】:

我认为您可能会混淆十进制和十六进制值。例如,十六进制的 0x78 是小写的 x,而十进制的 78(十六进制的 0x4e)是大写的 N。

在 HTML 中,您可以使用 &#n; 将 Unicode 实体指定为十进制或使用 &#xn; 指定为十六进制(其中 n 被十进制或十六进制字符代码替换)。对于上标 2,您可以使用 ²²

在您的示例代码中,您正在解码实体N。这是一个十进制实体,因此您会得到预期的结果(大写 N)。您已链接到使用十六进制的 Unicode 表。要获得小写的 x,您必须使用 x 作为输入。

【讨论】:

  • ok.. thts gr8.. ² 工作.. 你能告诉我我使用的 unicode 图表是否正确.. unicode.org/charts/PDF/U2070.pdf 。它说 00B2 是上标 2。
  • @robert 图表是正确的。 00B2 是十六进制。如果你使用²,你会得到一个上标2(注意额外的'x')。
  • @robert:你不是缺少'x'来指定十六进制值吗?
  • @robert 是官方的 unicode 图表,定义正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
相关资源
最近更新 更多