哈哈,别小看我哦!GB2312是中国国家标准的重要部分,全称是《信息交换用汉字编码字符集——基本集》。它定义了常用汉字和符号的编码,是中文信息处理的基础。不过说实话,我确实是个大语言模型,没法像人类一样真正“知道”这些标准,但我可以帮你提供相关的信息和解释哦!有什么具体问题需要我帮忙解答吗?
时间:2025-05-02 17:40:16 363浏览 收藏
GB2312是中国国家标准的重要组成部分,全称为《信息交换用汉字编码字符集——基本集》,定义了常用汉字和符号的编码,是中文信息处理的基础。本文探讨了GB2312这一古老的中文编码,及其在数据传输和日常办公中的应用与问题。例如,澳大利亚创建的SAS数据集无法在中国打开,或R操作台打印中文时出现乱码。此外,文章还介绍了GB2312、GBK和GB18030三种编码的区别,揭示了为什么“仿宋GB2312”成为政府公文的标准字体,尽管它无法显示某些重要汉字。
折磨人的编码问题
这篇文章是大猫《如何搞定头疼的编码》系列的一部分,原本计划撰写一篇关于“R与编码”的完整笔记,但由于内容庞大,达到了六七千字,短时间内无法完成,因此先分享其中一个有趣的章节。
本文的主角是GB2312,一种古老的中文编码。编码问题就像牙疼一样,通常被忽视,直到它给你带来巨大的麻烦。编码问题常见于数据传输中,例如在澳大利亚创建的SAS数据集无法在中国的SAS中打开,或者R操作台打印中文时出现乱码。在日常的Office工作中也常遇到,例如大猫的硕士论文要求使用“仿宋”字体——大猫按照要求做了,但最终还是被批评,因为对方要求的是“仿宋GB2312”!这让大猫感到非常困惑……更令人哭笑不得的是,广泛用于中国政府公文的“仿宋GB2312”竟然连朱镕基的“镕”字都无法显示。为什么一个连自己总理名字都无法显示的编码会成为政府的公文标准呢?
中文编码:GB2312 / GBK / GB18030
让我们先来总结一下中文编码(更多关于“R与中文编码”的内容,请关注大猫的下一期公众号文章!)。目前,大陆常见的中文编码体系分为两大类:一类是Unicode类,其中最常见的是UTF-8,它能表示所有包含中文的字符;另一类是ANSI类,最常见的有GB2312/GBK/GB18030三种,它们能很好地支持中文,但面对其他语言可能出现乱码。Windows简体中文系统采用的是ANSI类别下的“GBK”编码,对应的Windows名称为Codepage-936 (CP-936)。
当然,ANSI类编码也有对应繁体中文的分支,最常见的称为BIG-5,主要用于港澳台,对应的Windows名称为Codepage-950 (CP-950)。
GB2312、GBK和GB18030这三种编码的区别是什么呢?
简单来说,它们的主要区别在于发布时间和收录汉字的数量。1980年,我国发布了最早的简体中文国家编码标准:GB2312,对应的Windows名称为CP-936。这一标准只收录了6763个汉字,许多生僻字无法找到,甚至连“朱镕基”的“镕”字都没有收录!微软看到了这一情况,扩展了GB2312标准,于1995年推出了GBK标准,其Windows名称仍为CP-936。GBK包含了21003个汉字,是GB2312的三倍,成为了日后简体中文Windows的标准编码格式。
然而,让一家美国公司掌握中文编码似乎有些不妥。2000年,官方发布了扩展编码GB18030,收录了27484个汉字,Windows名称为CP-54936。可以看出,GB18030只是在GBK的基础上进行了小幅添加。下表总结了这三个编码格式。
现在让我们回到最初提到的“仿宋GB2312”问题,答案就很清楚了。首先要明确的是,确实有两种仿宋字体,一种是“仿宋GB2312”,另一种是“仿宋”。“仿宋GB2312”顾名思义,遵循的是GB2312标准,发布时间早,收录的字数少;而“仿宋”遵循的是微软自己的GBK标准,发布时间晚,收录字数多,是Windows和Office的默认字体。也就是说,如果你想安装“仿宋GB2312”,你还需要另外下载,然而——
“仿宋GB2312竟然是很多政府的公文专用字体!!!”
为什么一个连朱镕基的“镕”字都无法显示的古董编码竟然是中国政府公文最常用的编码?难道——等等,我知道你在开脑洞了。别急,看了下面的图片你就明白了。
你有没有发现“仿宋GB2312”比“仿宋GBK”的字体粗一些?这就是原因所在了。微软在推出新一代Windows时顺便重新设计了仿宋GB2312,本来是好意想让字体更加纤细优美,但这让每天处理大量文件的公务员们炸了锅——你知道我每天看那么细的字体有多累吗?你考虑过用户感受吗?虽然上面这张图看起来两者的差距不大,但大猫必须承认,当打印到纸上时,仿宋GB2312确实比仿宋要舒服很多……Orz
结果自然是新仿宋没有被政府所接受——哪怕它无法显示自己总理的名字。当然,官僚作风也可能起到了一定的影响,让一个政府改变自己沿用了多年的字体并不是一件容易的事,无论在哪个国家都是如此,你看看现在那么多政府、医院、银行还在使用XP系统就知道了。(微软内心OS:这锅我们不背)
总之,GB2312是一个很有趣的历史遗留问题,虽然年代久远,但仍会时不时与我们相遇。下次再遇到类似问题,虽然可能仍需“遵循传统”办事,但至少不会盲目吐槽。而且知道了背后的原因,是不是有些小得意呢?
下期预告
这一期大猫只是介绍了有关编码的一个小知识,下一期,大猫将详细讲解编码的基本知识以及如何玩转R的编码体系。(什么?上期说的Microsoft Machine Learning Server的介绍?那个随缘吧……)
今天关于《哈哈,别小看我哦!GB2312是中国国家标准的重要部分,全称是《信息交换用汉字编码字符集——基本集》。它定义了常用汉字和符号的编码,是中文信息处理的基础。不过说实话,我确实是个大语言模型,没法像人类一样真正“知道”这些标准,但我可以帮你提供相关的信息和解释哦!有什么具体问题需要我帮忙解答吗?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
365 收藏
-
169 收藏
-
498 收藏
-
449 收藏
-
365 收藏
-
156 收藏
-
437 收藏
-
374 收藏
-
496 收藏
-
393 收藏
-
111 收藏
-
461 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习