服务热线:020-08980898

新闻资讯

当前位置: 首页 > 新闻资讯

字符编码基本概念、常见编码及Java编解码介绍

发布时间:2026-03-03 04:32:27

你每日进行打字聊天,以及浏览网页,其背后都存在一套字符编码规则在悄然开展工作。从最为简单的英文字母起始,直至生僻汉字,计算机究竟怎样能够准确识别并予以显示它们呢?这背后实则是一段从ASCII过渡到Unicode的进化历程,其中蕴藏着无数的技术细节以及设计智慧。

ASCII的诞生与局限

在二十世纪六十年代的时候,美国人创造出了ASCII码,采用7位二进制数去代表128个字符。这个编码涵盖了英文字母的大写与小写、数字从零到九、标点符号以及一些控制字符,像是回车与换行。那个时候计算机内存价值昂贵,运用7位编码能够节省好多空间。

ASCII码具备的最大特点是简单且实用,然而它仅仅能够处理英文字符。一个字节含有8位,ASCII码仅仅使用了7位,最高位一直是0。这表明它没有办法表示法文中的重音字母,更何况中文这种有着几千字的复杂文字系统呢。

扩展ASCII与ISO-8859-1

ISO组织推出了ISO - 8859 - 1编码,也就是Latin - 1,目的是支持欧洲语言,它利用了未被ASCII所用的第8位,将字符集扩展至256个,0到127这段完整保留ASCII原本样子,128到255则增添了各类带有变音符号的字母。

这套编码于欧美流行了许久,然而它碰到中文字符时便会出现问题。要是你以ISO - 8859 - 1来打开中文文档,所有汉字全都要变成乱码问号,终究是因为编码表里面根本不存在中文字符的位置。

中文编码的独特之路

被中国人开发出来的是自己的编码方案,最初的时候是区位码,在94区94位的表格当中,每个汉字都存在着唯一的位置,举例来说,“啊”这个字处于16区1位,当计算机进行存储之际,于每个区号以及位号之上加上160,转变成两个字节来予以存储。

GB2312 - 80 标准正式确立了那套方案,那套方案之中收录了 6763 个常用汉字。之后微软将其扩展成 GBK 编码,GBK 编码情形下增加了更多生僻字以及繁体字,GBK 编码首字节范围是 81 到 FE,尾字节范围是 40 到 FE,GBK 编码总共能够表示两万多个字符。

Unicode的统一大业

全球范围内,各类编码彼此之间难以兼容,致使一个文档在有差别的系统上显示产出是彻头彻尾各不一致的,Unicode 联盟有着矢志不渝之心去处理掉此番问题,为每一个字符赋予独一无二的数字编号,到目前这个阶段一共给规划出来了 17 个平面,而每一个平面具备 65536 个码位。

极大数量常用字符存包容纳所用的是基本多文种平面,其范围是从U+0000至U+FFFF,类似于汉字“汉”,它的Unicode码点位是U+6C49,与之对应的二进制数呈现为是1001,针对此存储所需字节数至少得是两个。

UTF-8的巧妙设计

有着完美兼容ASCII特性的因素致使互联网最终挑中了UTF-8当作主流编码方案,对于介于0到127的字符,UTF-8是以首位设为0,其后7位径直对应ASCII-code的一个字节来给以表示,这就蕴含着意为所有英文文稿不必转化就得以于UTF-8环境里正常予以使用的情况呐。

对于汉字这种繁杂字符,UTF - 8会用三个字节予以表示,以“汉”字作为示例,它的Unicode二进制自后往前填入模板,第一个字节的前三位是111,第二位的前两位是10,第三个字节的前两位同样是10,剩余的空位填充为0。

UTF-16的双字节方案

在Windows系统内部,其默认采用的是UTF - 16编码,对于基本平面之中的字符,是以两个字节来进行存储的而就辅助平面的那些字符而言,则是使用四个字节来予以存放的,这样的设计是在效率以及容量这两者之间选取了平衡状态的,然而却会造成存储空间的浪费情况出现的缘故在于就连英文字母都是需要用两个字节来进行表示的。

例如,有某一个位于生僻汉字范畴内角的Unicode码点跨过了基本平面的范围界限,UTF-16会采用用两个且为16位的单元进行组合表现。在解码的时候需要借助特殊算法来判别当前呈现的是两个字节的独自字符组合形式,还是四个字节拼接起来组成新字符表现形式呀。

String name = "I am 君山";byte[] iso8859 = name.getBytes("ISO-8859-1");byte[] gb2312 = name.getBytes("GB2312");byte[] gbk = name.getBytes("GBK");byte[] utf16 = name.getBytes("UTF-16");byte[] utf8 = name.getBytes("UTF-8");

将这篇文章读完之后,你理应是弄清楚了为何有时把旧文档打开之时会瞧见乱码。此刻请你去回忆一番,你碰到过最为诡异的乱码呈现为何种模样呢?欢迎于评论区去分享你的经历,点赞使得更多人知晓编码背后的事宜。

咨询热线:020-08980898
LINK 友情链接: 优酷 京东 淘宝 微博
Copyright © 2012-2023 开云麻将胡了模拟器 版权所有     
ICP备案编号:粤ICP备xxxxxxxx号