兰陵月 发表于 2018-10-21 22:04:48

《WINDOWS程序设计》(019)2.1 字符集简史-2.1.4 双字节字符集

2.1.4双字节字符集     迄今为止,我们一直在看256个字符的字符集。但是,像中文、日文和韩文的象形文字约有21 000个字符。怎样来融合这些语言而同时保持与ASCII有着某种程序的兼容性呢?     答案(如果这样说是对的话)在于双字节字符集(DBCS)。DBCS一开始就是256个代码,就像ASCII一样。和其他规范的代码页一样,前128个代码是ASCII。但是,较高的128个代码中有些还跟随有第二个字节。这两个字节(称为前导字节和尾随字节)在一起代表一个单独的字符,常常是一个复杂的象形文字。     虽然中文汉字、日文和韩文共享许多相同的象形文字,但显然这些语言是不同的,往往同样的象形文字在三种语言中代表着不同的东西。Windows支持四种不同的双字节字符集:代码页932(日文)、936(简体中文)、949(韩文)以及950(繁体中文)。DBCS只有在为这些国家制造的Windows版本上才被支持。     双字节字符集的问题不在于字符是由两个字节组成的。问题是有些字符(特别是ASCII字符)是由一个字节组成的。这就导致了奇怪的编程问题。例如,一个字符串的字符长度不能因字节数量而决定。字符串的长度要解析后才能判断,每个字节都要被检查是不是双字节的前导字节。如果你有一个指针指向一个DBCS字符串的中间,那前一个字符的地址是什么呢?常规做法是回到字符串的开始,一直解析到指针的位置!
页: [1]
查看完整版本: 《WINDOWS程序设计》(019)2.1 字符集简史-2.1.4 双字节字符集