【问题标题】:Why two different characters have the same ASCII value?为什么两个不同的字符具有相同的 ASCII 值?
【发布时间】:2014-11-30 12:26:16
【问题描述】:

不确定这里发生了什么,但是如果我使用 Php 函数 ord(),它返回一个字符的 ASCII 值,我会为两个不同的字符获得相同的值。

print ord("’");

输出 226

print ord("—");

也输出 226。

有什么帮助吗?谢谢。

【问题讨论】:

  • 我不认为那些是 ASCII 字符。它们是 unicode 字符,ord 不适用于 unicode。
  • ASCII 是一个包含 128 个字符的 7 位字符集。 ASCII 没有字符 226。您看到的是 ord() 被意外输入弄糊涂了,而 PHP 通常没有帮助。在任何编码中,这些字符都不是数字 226。 en.wikipedia.org/wiki/ASCII

标签: php character-encoding char character ascii


【解决方案1】:

这些都不是 ASCII 值。 ord 仅将单个字节转换为十进制数,它实际上不是“字符感知”。这两个字符都是以相同字节 226 开头的多字节 UTF-8 字符。 ord 忽略以下字节。

【讨论】:

  • ord() 的文档确实支持问题中所述的内容。这似乎有点令人困惑。
  • PHP 在谈论字符串和字符时可能非常不准确。事实上,您可以将任意 byte00FF 输入到 ord,它会输出一个 0 到 255 范围内的数字。不多也不少。
  • @bzlm, ord("’") 不可能返回其参数的 ASCII 值,因为这里的参数不是 ASCII 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多