2.1 字符集

来源:互联网 发布:sql语言培训 编辑:程序博客网 时间:2024/04/30 07:04
2.1 字符集
软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。多年来,许多人
一直将文本串作为一系列单字节字符来进行编码,并在结尾处放上一个零。对于我们来说,这
已经成了习惯。当调用s t r l e n函数时,它在以0结尾的单字节字符数组中返回字符的数目。
问题是,有些文字和书写规则(比如日文中的汉字就是个典型的例子)的字符集中的符号
太多了,因此单字节(它提供的符号最多不能超过2 5 6个)是根本不敷使用的。为此出现了双
字节字符集(D B C S),以支持这些文字和书写规则。
2.1.1 单字节与双字节字符集
在双字节字符集中,字符串中的每个字符可以包含一个字节或包含两个字节。例如,日文
中的汉字,如果第一个字符在0 x 8 1与0 x 9 F之间,或者在0 x E 0与0 x F C之间,那么就必须观察下
一个字节,才能确定字符串中的这个完整的字符。使用双字节字符集,对于程序员来说简直是
个很大的难题,因为有些字符只有一个字节宽,而有些字符则是两个字节宽。
如果只是调用s t r l e n函数,那么你无法真正了解字符串中究竟有多少字符,它只能告诉你
到达结尾的0之前有多少个字节。A N S I的C运行期库中没有配备相应的函数,使你能够对双字
节字符集进行操作。但是, Microsoft Visual C++的运行期库却包含许多函数,如_ m b s l e n ,它可
以用来操作多字节(既包括单字节也包括双字节)字符串。
为了帮助你对D B C S字符串进行操作,Wi n d o w s提供了下面的一组帮助函数(见表2 - 1 )。
前两个函数CharNext 和Char Prev 允许前向或逆向遍历DBCS 字符串,方法是每次一个字
符。第三个函数IsDBCSLeadByte, 在字节返回到一个两字字节符的第一个字节时将返回
T R U E。