新手问题 about GBK GB2312 等等的编码问题

wangping · 2013年11月21日 · 最后由 putty 回复于 2013年11月21日 · 3725 次阅读

就是 GBK 编码的字符可以用 GB2312 代替吗,也就是说把 GBK 编码的看成 GB2312,他们之间有没有所谓的兼容?那么如果一个汉字不知道是否是 GBK 或是 GB2312 编码的话,该怎么办?如何转换成 utf-8? 网上说 GBK 最大兼容,但为什么我的汉字从 Gbk 变成 utf-8 的时候乱码了~~ convmv -f gbk -t utf-8 -r --notest *.zip 是 linux 的一个转码插件,解压 zip 包的时候,有些文件的中文名没转成功,有些成功了

1、 GB2312

GB2312(1980 年) 一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。汉字区的内码范围高字节从 B0-F7,低字节从 A1-FE,占用的码位是 72*94=6768。其中有 5 个空位是 D7FA-D7FE。

在 windows 中的代码页是 CP936

2、 GBK

GBK 最初是由微软对 GB2312 的扩展,也就是 CP936 字码表 (Code Page 936) 的扩展(原来的 CP936 和 GB 2312-80 一模一样),最初出现于 Windows 95 简体中文版中,由于 Windows 产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意 GBK 并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然 GBK 收录了所有 Unicode 1.1 及 GB 13000.1-93 之中的汉字,但是编码方式与 Unicode 1.1 及 GB 13000.1-93 不同。仅仅是 GB 2312 到 GB 13000.1-93 之间的过渡方案。GBK 收录了 21886 个符号,它分为汉字区和图形符号区。汉字区包括 21003 个字符。

GBK 作为对 GB2312 的扩展,在现在的 windows 系统中仍然使用代码页 CP936 表示,但是同样的 936 的代码页跟一开始的 936 的代码页只支持 GB2312 编码不同,现在的 936 代码页支持 GBK 的编码,GBK 同时也向下兼容 GB2312 编码。

3、 GB18030

2000 年的 GB18030 取代了 GBK1.0 的正式国家标准。该标准收录了 27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的 PC 平台必须支持 GB18030,对嵌入式产品暂不作要求。所以手机、MP3 一般只支持 GB2312。 GB18030 在 windows 中的代码页是 CP54936。

4、 GB13000

GB13000 等同于国际标准的《通用多八位编码字符集 (UCS)》ISO10646.1,就是等同于 Unicode 的标准,代码页等等的都使用 UTF 的一套标准。

从 ASCII、GB2312、GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为 0。按照程序员的称呼,GB2312、GBK 到 GB18030 都属于双字节字符集 (DBCS)。

@kingwkb 这么说现在是 GB18030 咯

iconv -f -t 试试?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号