GBK和GB2312都是双字节等宽编码 , 如果算上和ASCII兼容所支持的单字节 , 也可以理解为是单字节和双字节混合的变长编码 。GB18030编码是变长编码 , 有单字节、双字节和四字节三种方式 。
GB18030的单字节编码范围是0x00-0x7F , 完全等同与ASCII;双字节编码的范围和GBK相同 , 高字节是0x81-0xFE , 低字节的编码范围是0x40-0x7E和0x80-FE;四字节编码中第一、三字节的编码范围是0x81-0xFE , 二、四字节是0x30-0x39 。
Windows中CP936代码页使用0x80来表示欧元符号 , 而在GB18030编码中没有使用0x80编码位 , 用其他位置来表示欧元符号 。这可以理解为是GB18030向下兼容性上的一点小问题;也可以理解为0x80是CP936对GBK的扩展 , 而GB18030只是和GBK兼容良好 。
【ASCII/GB2312/GBK/unicode常用字符集编码详解】unicode
每一种语言的不同的编码页 , 增加了那些需要支持不同语言的软件的复杂度 。因而人们制定了一个世界标准 , 叫做unicode 。unicode为每个字符提供了唯一的特定数值 , 不论在什么平台上、不论在什么软件中 , 也不论什么语言 。也就是说 , 它世界上使用的所有字符都列出来 , 并给每一个字符一个唯一特定数值 。
Unicode的最初目标 , 是用1个16位的编码来为超过65000字符提供映射 。但这还不够 , 它不能覆盖全部历史上的文字 , 也不能解决传输的问题 (implantation head-ache's) , 尤其在那些基于网络的应用中 。已有的软件必须做大量的工作来程序16位的数据 。
因此 , Unicode用一些基本的保留字符制定了三套编码方式 。它们分别是UTF-8,UTF-16和UTF-32 。正如名字所示 , 在UTF-8中 , 字符是以8位序列来编码的 , 用一个或几个字节来表示一个字符 。这种方式的比较大好处 , 是UTF-8保留了ASCII字符的编码做为它的一部分 , 例如 , 在UTF-8和ASCII中 , “A”的编码都是0x41.
UTF-16和UTF-32分别是Unicode的16位和32位编码方式 。考虑到最初的目的 , 通常说的Unicode就是指UTF-16 。在讨论Unicode时 , 搞清楚哪种编码方式非常重要 。
UTF-8
Unicode Transformation Format-8bit , 允许含BOM , 但通常不含BOM 。是用以解决国际上字符的一种多字节编码 , 它对英文使用8位(即一个字节) , 中文使用24为(三个字节)来编码 。UTF-8包含全世界所有国家需要用到的字符 , 是国际编码 , 通用性强 。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示 。如 , 如果是UTF8编码 , 则在外国人的英文IE上也能显示中文 , 他们无需下载IE的中文语言支持包 。
GBK的文字编码是用双字节来表示的 , 即不论中、英文字符均使用双字节来表示 , 为了区分中文 , 将其高到位都设定成1 。GBK包含全部中文字符 , 是国家编码 , 通用性比UTF8差 , 不过UTF8占用的数据库比GBK大 。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说 , 如果英文字符较多 , 则建议使用UTF-8节省空间 。不过现在很多论坛的插件一般只支持GBK 。
推荐阅读
- 安装字典引出的问题——让三星SCH-i539的Palm OS支持中文GBK
- 方正小标宋GBK字体长啥样
- 方正小标宋gbk在word里面有吗
- 方正仿宋简体和方正仿宋GBK一样吗
- 方正仿宋简体和仿宋gb2312一样吗
