从硬件和OS的角度--彻底理解文件编码解码(应该没毛病)

编码懵懂

  计算机只识别二进制,为什么我们能看到汉字、英文和其他字符? 这少不了编码的作用。编码众多不一一列举,网上很多。
  为什么要写这篇文章,就是没彻底理解编码过程,网上好多解释很全,都是逻辑上的解释编码和解码是什么东西,当然这些必须了解。但对于一名程序员,处理编码的时候还是力不从心,为什么?就是知道什么是编码,却没搞懂编码的具体变化过程

彻底搞懂编码

  编码的过程很好理解,好多文章没说到点子上,因为有个过程忽略掉了。

硬盘/网络
内存
显示器/编辑器
读过程

硬盘有文件,文件是按照二进制存储的,然而各种编码后的都是二进制,是有区别的,比如
1.文件a.txt在硬盘上,它的编码是’utf-8’,也就是文件里面的字符对应的二进制都是根据’utf-8’编码规则排序的,不是’gbk’规则排序,也不是其他编码规则,就像汉字“五”代表5,罗马字母“V”代表5,汉字“五”和罗马字母“V”并不是同一种东西;

2.情况一.若内存只允许识别和存储Unicode编码,那么读取硬盘上的a.txt文件到内存,需要将utf-8转为Unicode编码,好比汉字“五”转换成数字5,(这个过程个问题怎么识别文件a.txt的编码的?即怎么识别“五”是汉字,我没想明白系统怎么处理的,或许文件有自带编码标识,这样也能讲得通);情况二.若内存可以识别并存储任何编码,那么,从硬盘上获取的的文件将原封不动是搬过来,不做任何处理;

3.编辑器要将内容展示给人看 ,把内存中的文件a.txt中的内容通过定义好的编码,显示出来,比如编辑器页面编码是’utf-8’,无论内存中任何一种情况都不会乱码,直接显示正常。若编辑器页面是’gbk’,在内存情况一中不会出现问题,但内存情况二中若编辑器没处理就会出现乱码。

写过程:

  无论编辑器设定的什么编码,写的内容都存在内存中,也就是编辑器编译的时候回自动转换为unicode编码。
  当出现保存到硬盘中的操作时,就会把内存的unicode编码内容转换成想要编码形式,比如你编辑器编码是gbk,存成uft-8文件,是没有问题的。只不过再次读取的时候或许有些问题,这些问题也可能会被编辑器自动处理。

特殊说明

解码是 非unicode 转换成unicode
编码是 一种编码(通常是unicode)转另外一种编码,条件是:若有直接转换机制(程序),直接转成另外一种编码,若没有先转换为unicode,然后通过unicode转换成另外一种编码。

这解释保留态度,有问题欢迎指责

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值