2.1.4 双字节字符集

        摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P23

        迄今为止,我们一直在看 256 个字符的字符集。但是,像中文、日文和韩文的象形文字约有 21 000 个字符。怎样来融合这些语言而同时保持与 ASCII 有着某种程序的兼容性呢?

        答案(如果这样说是对的话)在于双字节字符集(DBCS)。DBCS 一开始就是 256 个代码,就像 ASCII 一样。和其他规范的代码页一样,前 128 个代码是 ASCII。但是,较高的 128 个代码中有些还跟随有第二个字节。这两个字节(称为前导字节尾随字节)在一起代表一个单独的字符,常常是一个复杂的象形文字。

        虽然中文汉字、日文和韩文共享许多相同的象形文字,但显然这些语言是不同的,往往同样的象形文字在三种语言中代表着不同的东西。Windows 支持四种不同的双字节字符集:代码页 932(日文)、936(简体中文)、949(韩文)以及 950(繁体中文)。DBCS 只有在为这些国家制造的 Windows 版本上才被支持。

        双字节字符集的问题不在于字符是由两个字节组成的。问题是有些字符(特别是 ASCII 字符)是由一个字节组成的。这就导致了奇怪的编程问题。例如,一个字符串的字符长度不能因字节数量而决定。字符串的长度要解析后才能判断,每个字节都要被检查是不是双字节的前导字节。如果你有一个指针指向一个 DBCS 字符串的中间,那前一个字符的地址是什么呢?常规做法是回到字符串的开始,一直解析到指针的位置!

你可能感兴趣的:(《Windows,程序设计》学习之旅)