【问题标题】:UTF-8 Extended ASCII character taking up 3 bytes unexpectedlyUTF-8 扩展 ASCII 字符意外占用 3 个字节
【发布时间】:2015-11-15 17:54:13
【问题描述】:

在 UTF-8 中,我的理解(这可以通过 Wikipedia 确认)是 ASCII 中的任何字符都占用一个字节,而直到 U+07FF 的任何字符都占用两个字节。所以,我假设字符 (›) 应该被编码为两个字节,因为它在正确的范围内(代码点是 U+009B)。

但是,当我在浏览器的控制台 (Firefox) 中键入以下内容时,它给了我 3 而不是 2:

unescape(encodeURI("›")).length

(来自https://gist.github.com/mathiasbynens/1010324

显示 UTF-8 编码字符长度的网站似乎同意 - 为什么?

【问题讨论】:

    标签: encoding utf-8


    【解决方案1】:

    The › character is U+203A,而不是 U+009B(这是一个不可打印的转义码,"control sequence introducer")。

    【讨论】:

    • 那么 UTF-8 编码使用 不同 版本的扩展 ASCII 而非“扩展 ASCII”?
    • 您查看链接了吗?字符 根本不是扩展 ASCII 的一部分。有一个看起来像,但它不是可打印的字符。
    • 没有名称为“扩展 ASCII”的单一定义明确的字符集。您发现此内容的资源可能使用了这个不精确的术语来指代Windows code page 1251
    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多