3

处理内存中 unicode 字符串的首选格式是什么?为什么?

我正在通过为其生成可执行文件映像来实现编程语言。显然,一个工作的编程语言实现需要一个处理字符串的协议。

我考虑过使用动态数组作为字符串的基础,因为它们实现起来非常简单,并且对于短字符串非常有效。当以这种方式使用字符串时,我只是不知道字符的最佳可能格式。

4

2 回答 2

4

UTF16 是使用最广泛的格式。

UTF16优于UTF8的优势在于,尽管不那么紧凑,但每个字符的大小都是 2 字节(16 位)的恒定值 - 只要您不使用代理项(当坚持使用 2 字节字符时,编码称为UCS-2) .

在 UTF8 中,只有一小部分字符编码为 1 个字节,其他字符则为 4 个字节。这使得字符处理不那么直接并且更容易出错。

当然,使用 Unicode 是首选,因为它可以处理国际字符。

于 2008-12-24T12:23:00.130 回答
4

C Python 2.x 系列根据平台/构建/等使用 UTF-16 和 UCS-4。

这是python-dev 关于选择 Python 3.0 的 Unicode 内部表示的要求和权衡的有趣讨论。虽然那里的内容比我可以简要描述的要多,但它包括:

  • 讨论外部接口(恒定时间切片、.lower、.islower 等的高效实现)
  • 外部要求(GTK 采用 UTF-8 字符串,QT 采用 UTF-16 和 UCS-4 字符串,Windows 采用 UT-16 字符串等)
  • 它指向 Unicode 数据的其他实现(例如 QT)。
  • 它讨论了重要的用例(与外部接口密切相关)。
  • 等等
于 2008-12-24T13:01:06.327 回答