当前位置:  开发笔记 > 编程语言 > 正文

C++代码中的UTF用法

如何解决《C++代码中的UTF用法》经验,为你挑选了1个好方法。

UTF和UCS之间有什么区别.

在C++字符串中表示非欧洲字符集(使用UTF)的最佳方法是什么?我想知道你的建议:

代码中的内部表示

用于在运行时进行字符串操作

用于将字符串用于显示目的.

最佳存储表示(在文件中)

最好的有线传输格式(可能在不同架构上的应用程序之间的传输,并具有不同的标准区域设置)

John Milliki.. 8

UTF和UCS之间有什么区别.

UCS编码是固定宽度,并由每个字符使用的字节数标记.例如,UCS-2每个字符需要2个字节.代码点超出可用范围的字符无法以UCS编码进行编码.

UTF编码是可变宽度,并由存储字符的最小位数标记.例如,UTF-16每个字符至少需要16位(2个字节).具有大代码点的字符使用更大数量的字节进行编码 - 对于UTF-16中的星体字符,使用4个字节.

代码中的内部表示

最佳存储表示(即在文件中)

最好的有线传输格式(可能在不同架构上的应用程序之间的传输,并具有不同的标准区域设置)

对于现代系统,最合理的存储和传输编码是UTF-8.在某些特殊情况下,其他可能是合适的 - 旧邮件服务器为UTF-7,编写糟糕的文本编辑器为UTF-16--但最常见的是UTF-8.

首选内部表示取决于您的平台.在Windows中,它是UTF-16.在UNIX中,它是UCS-4.每个都有其优点:

UTF-16字符串从不使用比UCS-4字符串更多的内存.如果您将许多大字符串存储在主要基本多语言平面(BMP)中,则UTF-16将比UCS-4需要更少的空间.在BMP之外,它将使用相同的金额.

UCS-4更容易推理.由于UTF-16字符可能会分割为多个"代理项对",因此正确分割或呈现字符串可能具有挑战性.UCS-4文本没有此问题.UCS-4在"char"数组中的行为与ASCII文本非常相似,因此可以轻松移植现有的文本算法.

最后,一些系统使用UTF-8作为内部格式.如果您需要与现有的基于ASCII或ISO-8859的系统进行互操作,这是很好的,因为UTF-8文本中间不存在NULL字节 - 它们是UTF-16或UCS-4.



1> John Milliki..:

UTF和UCS之间有什么区别.

UCS编码是固定宽度,并由每个字符使用的字节数标记.例如,UCS-2每个字符需要2个字节.代码点超出可用范围的字符无法以UCS编码进行编码.

UTF编码是可变宽度,并由存储字符的最小位数标记.例如,UTF-16每个字符至少需要16位(2个字节).具有大代码点的字符使用更大数量的字节进行编码 - 对于UTF-16中的星体字符,使用4个字节.

代码中的内部表示

最佳存储表示(即在文件中)

最好的有线传输格式(可能在不同架构上的应用程序之间的传输,并具有不同的标准区域设置)

对于现代系统,最合理的存储和传输编码是UTF-8.在某些特殊情况下,其他可能是合适的 - 旧邮件服务器为UTF-7,编写糟糕的文本编辑器为UTF-16--但最常见的是UTF-8.

首选内部表示取决于您的平台.在Windows中,它是UTF-16.在UNIX中,它是UCS-4.每个都有其优点:

UTF-16字符串从不使用比UCS-4字符串更多的内存.如果您将许多大字符串存储在主要基本多语言平面(BMP)中,则UTF-16将比UCS-4需要更少的空间.在BMP之外,它将使用相同的金额.

UCS-4更容易推理.由于UTF-16字符可能会分割为多个"代理项对",因此正确分割或呈现字符串可能具有挑战性.UCS-4文本没有此问题.UCS-4在"char"数组中的行为与ASCII文本非常相似,因此可以轻松移植现有的文本算法.

最后,一些系统使用UTF-8作为内部格式.如果您需要与现有的基于ASCII或ISO-8859的系统进行互操作,这是很好的,因为UTF-8文本中间不存在NULL字节 - 它们是UTF-16或UCS-4.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有