Emacs 23 使用的字符集是 Unicode 的四倍——为啥?

Posted

技术标签:

【中文标题】Emacs 23 使用的字符集是 Unicode 的四倍——为啥?【英文标题】:Emacs 23 uses character set four times larger than Unicode - why?Emacs 23 使用的字符集是 Unicode 的四倍——为什么? 【发布时间】:2009-11-04 14:49:21 【问题描述】:

来自 Emacs 23.1 NEWS:

*** Emacs 字符集现在是 Unicode 的超集。 (它大约有 四倍的代码空间,其中 应该很多)。

稍后会详细介绍:

*** 在多字节缓冲区和字符串中,字符由 UTF-8 表示 字节序列。字符代码 空间现在是 0x0..0x3FFFFF 没有 差距;代码点 0x0..0x10FFFF 是 相同代码的 Unicode 字符 点,而代码点 0x3FFF80..0x3FFFFF 是原始的 8 位 字节。

根据***,UCS 的BMP 有65536 个字符,最新版本的Unicode 包含超过107000 个字符,UCS 有超过一百万个代码点。 0x3FFFFF 超过四百万。

可以解决哪些问题,或者拥有作为 Unicode 超集的内部字符集有什么好处?

【问题讨论】:

【参考方案1】:

Unicode 旨在包含所有人类语言所需的字符集,这对于代码的全球化/本地化当然很有用,但由于 Emacs 本身就是众神的工具,它还必须包含所有可能出现的字符被各种神祇使用(包括但不限于古圣的可怕符文)、航天种族(包括但不限于我们未来的外星霸主)、超智能机器智能(包括但不限于我们的未来的机器人大师)和其他所有渴望无限宇宙力量的存在。这可能是一大堆字符!

或者它可能与 UTF-8 是一种编码字符的方式有关,它的空间比 Unicode 集和 Emacs 只支持整个 UTF-8 占用的空间大得多,但我更喜欢我上面的解释。

【讨论】:

UTF-8 是 Unicode 字符集的编码。两者都不是另一个的子集/超集。 请注意,Unicode 是一个字符集,而 UTF-8 是 Unicode 字符集的字节编码(即,UTF-8 是一种表示 Unicode 字符集中任何“抽象字符”序列的方法作为字节序列)。 已编辑以与上面的 cmets 更紧密地结合在一起。谢谢你的解释。

以上是关于Emacs 23 使用的字符集是 Unicode 的四倍——为啥?的主要内容,如果未能解决你的问题,请参考以下文章

mac版ae cc 无法转换unicode字符 23:: 46 怎么解决啊 在线等 着急

python是啥编码格式

C++ 中的 Unicode 字符串索引

Emacs警告加载“... / .emacs.el”时发生错误:

在 Emacs 中将连续的空白显示为点

Ruby 输出 Unicode 字符