- 1.ASCII编码 0~127 使用一个字节即可表示;
- 2.但其它国家语言,如汉字(GB2312),日语(Shift_JIS)等,但各有各的编码,编码会有冲突,但和ASCII编码不会冲突,微软对各个语系都有特定的表示方法(应该是根据系统选择的区域和语言),GB2312或Shift_JIS实际就是MBCS的一种编码方式:
早在Windows采用Unicode统一编码进行语言管理之前,Windows为了能够进行非ANSI标准字符的输出,于是采用两个字节来表示这些语言文字。因为这些双字节文字和ANSI是混和在一起的,为了加以区别,Windows将这些字符的最高位置为1(即这些双字节文字的每个字节都>=127),所以这种表示法可以表示 127x127 约一万多种非ANSI文字,其本上可以表示任何一种语言的常用文字了。于是,Windows为每一个区域版本,都制定了分别独立的文字编码,这就是MBCS(多字节码)。
说这么多就是说不同语言的操作系统MBCS编码不一样,如中文系统就是GB2312.
- 3.为防止编码冲突,将所有语言都统一成Unicode编码,该编码内存表示方式有UTF-8,UTF-16和UTF-32,我们习惯说的Unicode编码方式实际是说的UTF-16这种表示方式,这个很多博客都没有说清楚,很多初学者很容易混淆编码和表示方式;
- 4.Windows编程中常常看到有WideChar2StdStr类似的函数,一般都是把UTF-16表示的Unicode字符串(WCHAR)转化为MDBC(char)--MDBC实际就是MBCS的内存表示方式。
参考自:
字符串和编码
MBCS与Unicode码
网友评论