当前位置:C++技术网 > 精选软件 > DBCS双字节字符集和MBCS多字节字符集的关系总结

DBCS双字节字符集和MBCS多字节字符集的关系总结

更新时间:2015-12-03 23:00:58浏览次数:1+次

    DBCS双字节字符集并不是定义一个字符用两个字节来表示,而是针对简体中文、日文、韩文和朝鲜文这几种文字的编码时,采用两个字节,而对于其他欧美国家的字符即字母等字符,还是用一个字节来表示一个字符。

    而在VS中的项目属性中,你只能看到多字节字符集MBCS和Unicode。

 DBCS双字节字符集和MBCS多字节字符集的关系总结

    实际上,通过查询MSDN后发现,实际上,MBCS属于一种统称,而对应的具体字符集则是DBCS。而MBCS现在也就DBCS一种。所以,你可以将DBCS和MBCS视为同一种字符集,当然,如果什么时候弄出第二种多字节字符集的话,那么就不能将双字节字符集和多字节字符集视为一个概念咯。

    下面是微软MSDN的VS2015版的官方中文解释,直接贴出来参考,就不重复了,参考地址:https://msdn.microsoft.com/zh-cn/library/5z097dxa.aspx
    所以,如果使用的是多字节字符集环境下写代码,最麻烦的问题就是统计字符的问题了。因为字符串中,中文等字符使用的是两个字节来表示的,而英文字符则是一个字节表示的,这样就是一个字节和两个字节混合的。所以,你不能简单的计算字节数来统计字符数了。
    在多字节字符集字符串中,你需要先分析第一个字节,判断这个字符是由一个字节表示的还是两个字符表示的。
    如果你对统计中文字符,可以参考《如何判断字符串中是否含有中文字符》,这篇文章是简单的判断字符编码大于127来认为是中文。实际上并不严格。如果要严格判断,则通过代码页来确定,即判定第一个字节的值,来确定字符属于什么文字。
    微软MSDN标准的代码页列表地址:https://msdn.microsoft.com/zh-cn/library/aa288104
    具体如何通过代码页来判断字符串中的文字,留给你来研究咯。
    因为之前对DBCS和MBCS有所误解,所以,再学习的时候,发现这个误区,所以特地总结出来。