对于文件编码格式的浅显理解
发布日期:2021-05-10 12:50:52 浏览次数:23 分类:精选文章

本文共 1415 字,大约阅读时间需要 4 分钟。

字体乱码这个问题相信很多人都遇到过,但是都是间歇性的,不是经常性的,大多时候都没有太在意。

在遇到过这么多次乱码之后,特别是在linux下打开windows的文件乱码,我觉得有必要了解一下编码方式了。

首先,计算机内部只能存储二进制数据,即1和0的bit位。所以,我们要让计算机显示各种字符,就必须要对字符进行编码,让每一个字符对应一个数字编码。而之所以会造成乱码现象,是因为当初创建文件的时候采用的编码方式,和打开时的编码方式不一样,这样的对应关系就乱了,于是我们看到的就是乱七八糟的。

ASCII

计算机是美国人发明的,所以最初的计算机理所应当支持的就是英文字母以及英文里面的各种符号。由于这些字符不怎么多,美国人就提出了ASCII编码,只用一个字节(byte)表示一个字符。

unicode

随着计算机的发展,计算机只能显示英语是绝对不行的,要不然怎么有我现在的这篇文章呢?而并不是所有语言都像英语一样可以用一个字节表示一个字符(像我大中华便有好几万字符),于是各个国家纷纷开始提出自己国家文字的编码方式。但是世界上这么多国家,这么多语言,要是每个国家都有自己的标准,那一台计算机上不得有好多种编码方式啊,这会造成一种混乱。

这时,多语言软件制造商组成的统一码(unicode)联盟出手了,这个组织在1994年正式提出了unicode编码。正如unicode这个名字,它足以表示世界上所有语言中的字符,现在在世界上被广泛采用。

ISO/IEC 10646

在“统一”这个方面怎么能少的了ISO这个组织,在unicode联盟研发unicode时,ISO也在研发用于各种国家之间的编码方式,ISO定义了UCS(通用字符集),定义了ISO/IEC 10646。ISO和unicode联盟很快认识到研发两个不同的统一码是不必要的,所以他们选择了合作,于是现在它们从内容上来说是同步一致的。

UTF-8

UTF-8,UTF-16以及UTF-32都是unicode的实现方式

实现方式的理解:unicode编码使一个字符对应于一个数字编码,但是在计算机内部不是简单的存入这个编码值,这是为了对计算机中的内容进行更好的组织。所以就有了几种实现方式,将这些数字编码再映射到计算机内存中的二进制码。其中UTF-8就是在互联网的发展,强烈需求下产生的。

中文编码

在unicode提出之前,我国就已经提出了自己的汉字编码

  • GB2312 1981年,GB是国标的意思
  • BIG5 1984年台湾一群人为了解决当时大陆的GB2312没有覆盖繁体而提出的
  • GBK 对国标的扩展,向下兼容GB2312,向上支持ISO/IEC 10646
  • GB18030 我国政府于2000年3月17日发布的新的汉字编码国家标准,2001年8月31日后在中国市场上发布的软件必须符合本标准。

至于中国为什么使用自己规定的国标码而不使用unicode,这个问题我没有找到答案,有知道的在评论区告知一下呢?

乱码

Linux下默认是UTF-8,而windows可能是GB18030,于是这乱码就不奇怪了

还有各种奇奇怪怪的乱码原理都一样,可以通过转换编码的软件(比如enca)转文件的编码格式

大致就是这样了,这里我说的是编码方式,有一个概念叫字符集,规定了每个字符对应的编码,其实就是编码方式,把一件事搞清楚了就好了,不用纠结文字。

如果哪里写的不对,请各位大神们指出啊

上一篇:python 数据类型总结
下一篇:Qt5 creator ubuntu16.04无法输入中文

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年05月13日 11时31分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用 2025-03-29
cytoscape安装java_Cytoscape史上最全攻略 2025-03-29
c语言程序设计年历显示,C语言程序设计报告《万年历》.doc 2025-03-29
C语言程序设计梁海英答案,1.5 习题 2025-03-29
c语言编写单片机中断,C语言AVR单片机中断程序写法 2025-03-29
#pragma region、{} 2025-03-29
ddr2的上电顺序_S5PV210 DDR2初始化 28个步骤总结 2025-03-29
deque stack java_「集合系列」- 初探 java 集合框架图 2025-03-29
easyexcel 导出 代码翻译converter_【starter推荐】简单高效Excel 导出工具 2025-03-29
echarts 如何在一条柱形显示两个数字_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!... 2025-03-29
eclipse里source的快捷方法_Eclipse快捷键/快捷操作汇总 2025-03-29
elasticsearch 查询_Elasticsearch地理信息存储及查询之Geo_Point 2025-03-29
embedding层_【预估排序】Embedding+MLP: 深度学习预估排序通用框架(一) 2025-03-29
excel中最常用的30个函数_Excel玩转数据分析常用的43个函数! 2025-03-29
flink sql设置并行度_Flink 参数配置和常见参数调优 2025-03-29
go 字符串替换_Go 每日一库之 quicktemplate 2025-03-29
hex editor neo下载_口袋妖怪爆焰黑手机版下载-口袋妖怪爆焰黑手游下载v4.3.0 安卓版... 2025-03-29
hp工作站z8装Linux,惠普Z8G4双路最小工作站 2025-03-29
html上传图片直接保存到数据库中,Editor上传图片路径存入数据库中怎么弄? 2025-03-29
ICLOUD储存空间要升级吗_有人像我一样需要恢复苹果手机icloud空间ios备份时 微信卡住不动了吗(已解决)... 2025-03-29