X86 进程内存中的Unicode字符串
处理unicode字符串时,内存中最首选的unicode字符串格式是什么?为什么 我正在通过生成一个可执行文件映像来实现一种编程语言。显然,工作编程语言实现需要处理字符串的协议X86 进程内存中的Unicode字符串,x86,language-design,language-implementation,X86,Language Design,Language Implementation,处理unicode字符串时,内存中最首选的unicode字符串格式是什么?为什么 我正在通过生成一个可执行文件映像来实现一种编程语言。显然,工作编程语言实现需要处理字符串的协议 我考虑过使用动态数组作为字符串的基础,因为它们实现起来非常简单,对于短字符串也非常有效。以这种方式使用字符串时,我不知道字符的最佳格式。UTF16是使用最广泛的格式 over的优点是,尽管不太紧凑,但每个字符都有一个2字节(16位)的恒定大小-只要不使用代理(当坚持使用2字节字符时,将调用编码) 在UTF8中,只有一小部
我考虑过使用动态数组作为字符串的基础,因为它们实现起来非常简单,对于短字符串也非常有效。以这种方式使用字符串时,我不知道字符的最佳格式。UTF16是使用最广泛的格式 over的优点是,尽管不太紧凑,但每个字符都有一个2字节(16位)的恒定大小-只要不使用代理(当坚持使用2字节字符时,将调用编码) 在UTF8中,只有一小部分字符编码为1字节,其他字符编码为4字节。这使得字符处理不那么直接,更容易出错
当然,使用Unicode是首选,因为它能够处理国际字符。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)
- 它讨论了重要的用例(与外部接口密切相关)
- 等等