宽字符Windows

时间:2011-12-04 13:39:52

标签: c++ windows unicode utf-16

Windows将wchar_t符号定义为16位长。但是,使用的UTF-16编码告诉我们一些符号实际上可能用4个字节(32位)编码。

这是否意味着如果我正在为Windows开发申请,请填写以下声明:

wchar_t symbol = ... // Whatever

可能只代表实际符号的一部分吗?


如果我在*nix wchar_t长度为32位的情况下做同样的事情会怎么样?

1 个答案:

答案 0 :(得分:7)

是的,这意味着symbol可以在Windows上拥有代理对的一部分。 On *nixes wchar_t长度为32位,将保存整个Unicode字符集。请注意,Unicode代码点不代表字符,因为某些字符可能由多个Unicode代码点编码,因此根本无法计算字符数。特别是这意味着在Unicode库之外的任何地方使用除UTF-8编码的窄字符串之外的任何东西都没有意义,即使在Windows上也是如此。

阅读this old thread了解详情。