c - 为什么 wchar_t 没有广泛用于 Linux/相关平台的代码中?

标签 c unicode wchar-t

这让我很感兴趣,所以我要问 - 为什么 wchar_t 在 Linux/类 Linux 系统上没有像在 Windows 上那样广泛使用?具体来说,Windows API 在内部使用 wchar_t 而我相信 Linux 不会,这反射(reflect)在许多使用 char 类型的开源包中。

我的理解是给定一个字符c需要多个字节来表示它,然后在char[]形式c被拆分在 char* 的几个部分上,而它在 wchar_t[] 中形成一个单元。那么,总是使用 wchar_t 不是更容易吗?我错过了否定这种差异的技术原因吗?或者这只是一个收养问题?

最佳答案

wchar_t 是一个具有平台定义宽度的宽字符,这并没有太大帮助。

UTF-8 字符每个字符跨越 1-4 个字节。 UCS-2 每个字符恰好跨越 2 个字节,现已过时并且不能表示完整的 Unicode 字符集。

支持 Unicode 的 Linux 应用程序倾向于在字节存储层之上正确地执行此操作。 Windows 应用程序倾向于作出这种愚蠢的假设,即只有两个字节就可以了。

wchar_t's Wikipedia article简要介绍了这一点。

关于c - 为什么 wchar_t 没有广泛用于 Linux/相关平台的代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588302/

相关文章:

c - 如何保护基于 C 的库的 init 函数?

c - 在c编程中如何移动数组中的第一个元素并将其移动到最后一个元素?

perl - 如何将 UTF-8 字符串与 Perl 的 printf 正确对齐?

objective-c - 如何解决 NSTask 调用 -[NSString fileSystemRepresentation] 作为参数

c++ - 有一个 PCWSTR 并需要它成为一个 WCHAR[]

c - 未知的段错误

c - 如何通过多次调用获得程序的性能?

regex - 获得字素的正确方法是什么?

c++ - 如何将 wchar_t 值打印到控制台?

c++ - 如何将 wchar_t 值打印到控制台?