【问题标题】:Are the first 128 characters of utf-8 and ascii identical?utf-8 和 ascii 的前 128 个字符是否相同?
【发布时间】:2019-06-29 13:25:07
【问题描述】:

utf-8和ascii的前128个字符是否相同?

utf-8 table

Ascii table

【问题讨论】:

  • 前128个码位是一样的,是的。请注意,它们并不都是字符。
  • @SamiKuhmonen 你会怎么称呼那些不是字符的 oens?命令?
  • 我可能说错了,似乎他们确实也将术语字符用于控制、格式化等符号。
  • 也许你在比较柑桔和橘子。 UTF-8 是 Unicode 字符集的字符编码。 ASCII 是一个字符集,具有一个字符编码(或两个,如果您将 8 位高位为零的字符集与 7 位高位用于其他任何字符(如奇偶校验)的字符集不同)。 “第一个字符”意味着类似代码点(输入)而不是代码单元(输出)或字节(序列化代码单元),但“字符”是一个松散定义的术语。
  • 这是XY problem吗?您是否有一个可以读取 UTF-8 但不能读取 ASCII 但想将其应用于 ASCII 数据的库?否则,只需使用作者和读者之间约定或通信的字符编码。

标签: encoding utf-8 ascii


【解决方案1】:

是的。这是 UTF-8 设计中的有意选择,以便兼容现有的 7 位 ASCII。

编码也是有意设计的,因此 7 位 ASCII 值不能表示任何东西除了它们的 ASCII 等价物。例如,在 UTF-16 中,欧元符号 (€) 编码为 0x20 0xAC。但是 0x20 是 ASCII 中的空格。因此,如果仅 ASCII 算法尝试对以 UTF-16 编码的“€ 10”之类的字符串进行空格分隔,则会损坏数据。

这在 UTF-8 中不会发生。 € 在那里被编码为 0xE2 0x82 0xAC,它们都不是合法的 7 位 ASCII 值。因此,在 ASCII SPACE (0x20) 上天真分割的 ASCII 算法仍然可以工作,即使它对 UTF-8 编码一无所知。 (对于任何 ASCII 字符,如斜杠、逗号、反斜杠、百分比等也是如此。)UTF-8 是一种非常聪明的文本编码。

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 2019-06-16
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多