您的位置 首页 php

SBCS、DBCS、ASCII、MBCS(ANSI)、Unicode

1.编码方式和字符类型。

  • 第一种编码方式是单字节字符集,称之为 SBCS ,它的所有字符用一个字节存储。 ASCII 码就是SBCS。
  • 第二种编码方式是多字节字符集,称之为 MBCS ,它包含的字符中有单字节长的字符,也有多字节长的字符。Windows用到的MBCS只有二种字符类型,单字节字符和双字节字符。因此Windows中用得最多的字符是双字节字符集,即 DBCS ,通常用它来代替MBCS。
  • 第三种编码方式是 Unicode 。 Unicode只是一个字符集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,通常说Unicode字符,指的是UTF16,既所有字符都以双字节存储,故有时也将Unicode称为宽字符集(wide characters)。

2.ASCII、MBCS、ANSI、Unicode关系和区别

  • ASCII编码 0~127 使用一个字节即可表示;
  • 为了扩充ASCII编码,以用于显示本国的语言,不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码,又称为MBCS(Muilti-Bytes Charecter Set,多字节字符集),它是编码的一种类型,而不是某个特定编码的名称。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码,所以在中文 windows下要转码成gb2312,gbk只需要把文本保存为ANSI 编码即可。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。一个很大的缺点是,同一个编码值,在不同的编码体系里代表着不同的字。这样就容易造成混乱。导致了unicode码的诞生。
  • 为防止编码冲突,将所有语言都统一成Unicode编码,该编码内存存储方式有UTF-8,UTF-16和UTF-32,我们习惯说的Unicode实际是说的UTF-16这种内存存储方式,这个很多博客都没有说清楚,很多初学者很容易混淆编码和内存表示方式;

3.Unicode和MBCS字符串之间的转换

  • Windows编程中常常看到有WideCharToMultiByte类似的函数,一般都是把UTF-16表示的Unicode字符串(WCHAR)转化为MBCS(CHAR)

文章来源:智云一二三科技

文章标题:SBCS、DBCS、ASCII、MBCS(ANSI)、Unicode

文章地址:https://www.zhihuclub.com/80430.shtml

关于作者: 智云科技

热门文章

网站地图