百科狗-知识改变命运!
--

Windows为什么用GBK而不是UTF-8

桃子1年前 (2023-12-02)阅读数 17#综合百科
文章标签汉字内码

9x沿用了DOS的文字编码方式,是基于当前locale的ANSI代码页,对于zh_cn来说,这个代码页是GBK(GB2312的超集)

NT内核的Windows采用的是UCS-2 LE(UCS-2和UTF-16还是有少许区别的,参见:UTF-16),通常情况下,Windows下的程序员会把这种编码称为Unicode

所以NT为了代码级兼容,涉及到文本处理的Windows API会有两套,后缀分别是A(nsi)和W(idechar),通过UNICODE宏来区分使用哪一个。Ansi版本的API绝大多数的实现,是在W版本的API外面套了一层壳。假如Windows有一天需要采用UTF-8作为内码,那么我估计按微软的尿性,就只能再开一套新接口来做兼容了,这必然是没有意义并且浪费时间的(如果哪天微软因为什么奇葩原因不得不改,当我没说这句吧)。这段算是回答题主的问题。

Windows为什么用GBK而不是UTF-8

继续跑题,以我了解到的知识来看,如果是纯Windows客户端开发,应该是没有必要转换成UTF-8的,直接使用Unicode存储就够了。当需要跟服务端通信时,由于后端通常采用Linux系统,所以必须存在一个转换过程。转换使用UTF-8的理由大致有以下两个:

1.大部分情况下,需要传输的数据以0-255区间的字符(英文字母、数字、半角标点符号)为主,所以虽然UTF-8编码的汉字需要3-6个字符,但仍然可以有效减少传输量。

2.很多优秀的开源组件是没有过多考虑这个问题的,对于一个英语世界的程序员来说,最简单的实现方法就是采用UTF-8编码,一了百了。这也意味着我们在使用这些组件的时候,需要转换成UTF-8

区别:

1、GBK 兼容GB 2312 编码,为GB 2312 的升级版本。

2、GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。

charset=gbk

GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification) ,中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函1995 229号文件的形式,将它确定为技术规范指导性文件。

charset=gb2312

《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。

GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)