【发布时间】:2011-11-27 18:23:06
【问题描述】:
有什么区别
wchar_t arry[]
和
char arry[]
类型初始化。
对于Unicode,我知道字符我知道它有几种编码格式。其中windows 使用UTF-16。这意味着大多数字符都是 16 位的。但在char 类型中,一个字符是 8 位。这是否意味着我们可以在wchar 类型中存储2byte?
哪种类型更有效?为什么?
【问题讨论】:
有什么区别
wchar_t arry[]
和
char arry[]
类型初始化。
对于Unicode,我知道字符我知道它有几种编码格式。其中windows 使用UTF-16。这意味着大多数字符都是 16 位的。但在char 类型中,一个字符是 8 位。这是否意味着我们可以在wchar 类型中存储2byte?
哪种类型更有效?为什么?
【问题讨论】:
两者在 Windows 上都是可变长度的(其中 wchar_t 表示 UTF-16),而后者对于大多数测试来说都是浪费的。即使在 CJK 中,通过网络传输的文本也有一半是 ASCII。
The most portable and easiest way to support Unicode is to use UTF-8 (char)。这意味着在转换为 UTF-16 以将字符串传递给 Windows API 时性能损失很小,但与系统调用相比,它相对较小。
【讨论】:
wchar_t == UTF-16”具有误导性。一种是C数据类型,另一种是文本编码。
wchar_t 字符串中。
多字节是一种可变宽度编码。使用英语工作时您将使用 1 个字节,但对于非常不常见的字符集通常使用 2 个或更多(最多 6 个字节)。因此,就内存使用而言,多字节通常更好。 但是,当您需要知道字符串中有多少个字符时,在 unicode 中,您只需将字符串长度除以 2 (sizeof (wchar_t))。在多字节中,您必须遍历整个字符串并计算字母的数量。 见multibyte。
【讨论】: