Windows将wchar_t
符号定义为16位长。但是,使用的UTF-16
编码告诉我们一些符号实际上可能用4个字节(32位)编码。
这是否意味着如果我正在为Windows
开发申请,请填写以下声明:
wchar_t symbol = ... // Whatever
可能只代表实际符号的一部分吗?
如果我在*nix
wchar_t
长度为32位的情况下做同样的事情会怎么样?
答案 0 :(得分:7)
是的,这意味着symbol
可以在Windows上拥有代理对的一部分。 On *nixes
wchar_t
长度为32位,将保存整个Unicode字符集。请注意,Unicode代码点不代表字符,因为某些字符可能由多个Unicode代码点编码,因此根本无法计算字符数。特别是这意味着在Unicode库之外的任何地方使用除UTF-8编码的窄字符串之外的任何东西都没有意义,即使在Windows上也是如此。
阅读this old thread了解详情。