又是编码问题?是时候搞懂编码原理了
开始学编程时总是头疼编码问题,有时候明明开发环境运行正常,上了测试环境就报编码错误了。有时自己debug好好的,结果上了环境用户输入中文又报错了。解决了读取文件的编码问题,又遇到网络编码问题,解决了网络编码问题又遇到数据库编码问题。其实这是没搞懂编码的原理,本文希望可以帮助大家理解编码,遇到问题就可以从原理上解决。
一、起源
1、人类语言五花八门,而计算机只认识0和1,要让两者沟通,就必须存在一个翻译官,把人类语言翻译成计算机的语言0和1,把人类理解的文字翻译成0和的组合1就是编码,把0和1的组合翻译成人能读懂的文字就是解码。计算机最基本的操作单位是字节(Byte),一个字节有八个位(bit),即八个0或1的组合,例如01010101。计算机最初是美国人发明的,美国人约定把01000001这个组合翻译成大写的英文字母A,把01000010这个组合翻译成大写英文字母B,当你在键盘上输入A的时候,计算机将A翻译成了01000001存储起来,这就是编码,当需要把存储的内容重新显示到屏幕上时,计算机又把01000001翻译成A打印到屏幕上,这就是解码。一个字节可以表示256个数字,足够用来表示所有英文字母、数字和标点了,实际上这就是ASCII码。
编码将一个个字符经过翻译变成了一个个字节,计算机实际存储的是字节流,网络传输和数据库底层存储的也都是字节流。需要注意的是,字符需要编码,数字是不用编码的,比如32,如果看成字符就是3和2两个字符,用对应的编码方式进行编码,如果看成数字,那对应的存储结构是00100000。
二、乱码
如果所有人只用英语的话,大家都使用ASCII编码,那编码就是透明的,不会出现什么问题。但随着计算机普及到全世界,像我们国家,光汉字都数不清多少个,一个字节根本不够表示了,所以出现了使用两个字节、三个字节的编码方式,像gbk,gb2312等等,各个国家也都发明了代表自己语言文字的编码方式。
这样一来各自使用计算机都没问题了,可是这样实在有点太乱,两种不同的语言都不能放在一起,能不能把全世界当成一个整体,于是就出现了由国际组织编排的unicode编码,unicode为每种语言的每个字符设置了编码,这样全世界都用unicode就统一起来了。
但是由于编码的种类繁杂,乱码问题出现了。编码之所以受人重视得归功于乱码,乱码的本质是编码和解码用了不同的方式,如果我用utf8编码输出文件,你拿到文件后用gbk解码,就发生乱码了,因为字符按照utf8规则编排的0和1的组合,用gbk的规则去解码肯定是不能还原成原来的字符的。
数据库也是这个道理,如果建库建表设置了utf8编码,然后代码中操作时用gbk编码去读写就会出现乱码,网络通信也一样,如果发送端发送字符时使用utf8编码,字节流经过网络发送给接收端,接收端必须也用utf8做解码才能还原成正确的字符。
还有一种乱码的情况,文件本来就不是文本文件,本来就是二进制文件,也就是说没有经过编码,你去解码当然会显示乱码。
所以要避免乱码,只要保证编码和解码方式一致就可以啦。
另外如果遇到文件乱码不要慌,因为乱码说白了只是显示错误,用错解码方式并不会影响文件本身的存储结构,换成正确的解码方式就可以正确显示了。乱码是对人而言的,对计算机来说,不管是文本还是图片,存储的都是字节流,不存在乱码的概念。
科学与美学融汇一身ELACVertexIII系列看到这样的文章标题,或许大家的第一反应就是:这说得是不是有点夸张?其实在我眼中,ELACVertexIII系列产品的确是这样。VertexIII系列属于ELAC的定制安装类产品……
新款吉利缤越小型SUV官图发布内饰撞色设计日前,吉利汽车官方发布了一组新款缤越的官方图片,新车在外观、内饰等方面进行调整,整个造型更符合年轻消费者对小型SUV的审美需求。新车内饰更具有极强的运动氛围,让人眼前一亮。现款……
T260S自助取票机一、概述随着我国经济快速发展,人们的出行活动越来越频繁,对行业服务的快捷、便利等要求也越来越高。自助取票机的广泛应用极大的方便了民众购票取票问题,也大大缓解了机场、火车站……
神州细胞国内生物新药研发前五,2款产品临近商业化值得期待选股理由:生物新药小龙头业内名气较大证券代码:688520评级:AA本文分为六部分:一、业务与行业;二、公司治理;三、财务分析;四、核心竞争力及投资逻辑;五、盈利预……
全球搜赋能广西产业,助力桂品出海4月8日,全球搜受邀出席由广西壮族自治区商务厅主办的跨境电子商务综合能力培训主题会议,全球搜上海分公司罗柱先生作为授课讲师进行了官网营销,智胜未来的主题分享,将跨境出海数字营销……
亿嘉和电力巡检机器人龙头,利润与股价齐飞选股理由:业绩高速增长股价逼近历史新高成交量逐步放大证券简称:亿嘉和评级:AA数据截止日期:2019年9月30日单位:亿元证券代码:603666;成立日期:1……
数字化转型先行者北京燃气北京燃气是组建于1999年9月的国有独资公司,专门从事城市管道天然气业务,2007年成功在香港上市,在立足北京、内外并举、专注燃气、上下延伸的发展战略指引下,实现上游资源和中游……
吉利月销量同比四连跌,但即将触底反弹?新的一月,新的好消息。8月6日,吉利汽车公布最新销量数据。17月吉利汽车的累计销量为729,512辆,同比增长15,已完成153万辆年度销量目标的48。其中,吉利汽车旗下……
征拓S3二代体验报告可能是体积最小的3口65W氮化镓充电器快充技术虽然发展很快,但大多还是限制在自有协议(OPPO、vivo、小米的120W)之中,兼容USBPD产品协议的依然是主流并且,PD协议现在囊括了当下绝大多数的手机品牌(苹果……
旅游行业不景气,旅行社如何利用小程序引流裂变?疫情期间,旅游业可谓是遭到重创,没有人旅游,就没有收入,没有收入就没法生存,可是急坏了很多旅行社。现在疫情虽然还没有结束,但是相比较之前,已经好了很多,各行各业也都慢慢有了起色……
奶粉越贵越买!宝妈也很无奈为啥不学学拼多多和伊利?这两天看到个新闻,心里特别不是滋味!某品牌高管说现在的中国奶粉,价格便宜了反而没人买,大家都愿意买贵的。看了一圈评论区网友的留言,大家的想法差不多和我一样。现在小孩……
这手机也不知道哪里出问题了太难了,手机到底哪里出问题了,屏幕也碎了,千元手机,用了几天,就被尖锐的东西砸坏了,心疼。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。……