c++ - 宽字符窗口

标签 c++ windows unicode utf-16

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

这是否意味着如果我正在为 Windows 开发应用程序,则以下语句:

wchar_t symbol = ... // Whatever

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


如果我在 *nix 下做同样的事情会发生什么,其中 wchar_t 是 32 位长?

最佳答案

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

阅读this old thread了解详情。

关于c++ - 宽字符窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375681/

相关文章:

c++ - 在 Mac 和 Windows 上编写 C++ 代码应该使用什么?

java - Java 程序在 Linux 和 Windows 之间的性能比较

c++ - 如何拦截透明窗口的鼠标事件?

unicode - 如何获取字符的 Unicode 代码点?

windows - Autohotkey:发送 5 位十六进制 unicode 字符

c++ - C++ 中的运算符模板

c++ - 包含标题会导致错误

c++ - 将一个数组分配给堆 C++ 上的另一个数组

c# - 为什么字符串 "\u0022"以这个字符串 "\u204D"开头

c++ - 如何在opencv的Aruco标记上绘制矩形?