只要涉及编程工作,编码是永远绕不开的问题。只有彻底理解编码,遇到编码问题才知道问题的根源在哪里,并找到对应的解决办法。花一点时间去彻底消化并理解他,长远来看,对以后工作效率的提升是非常值得的。下面是我对编码的一些总结和理解,有不对之处还望指正。
从根本上来说,计算机只能处理0和1,也就是说只能处理由0和1组成的一串串数字。让人直接用01数字给计算机下达指令或传输字符显然是很困难的;但其实,早期计算机刚兴起时,那时的程序员就是写好01代码传给机器执行的。
人用自然语言沟通,而计算机只处理01代码。为了人与计算机更友好的交互,有人想了办法,将自然语言的每个字符都用一串01数字串来表示,也就是对每个字符用01串来编码,比如A用0100 0001来表示,这样就可以制定一个字符与01数字串的对应表,也即编码表,人只需要输入自然语言(如:Hello),计算机通过查编码表就可以转换为01串,这样机器就可以理解并处理了。
众所周知,世界上第一台计算机是在美国诞生的,因此,第一种编码自然是解决英文和01串的对应关系,这就促生了ASCII编码的出台,ASCII编码表用一个字节(8位)包含大小字母、数字、标点符号以及控制字符。
随着计算机的普及,世界上开始有越来越多的国家使用计算机,然而,每个国家都有自己的一套语言,加起来的字符成千上万。而ASCII最多只能编码256个字符,已经不能满足这么多的需求。于是,各国就制定了自己国家的编码表。比如中国就制定了GB2312、GBK、GB18030等编码规范。每个国家都有自己的一套编码,这就导致同一串01数字可能代表两个国家不同的字符,或者同一个字符A,在两个国家分别用不同的01数字串表示。这就导致不同编码的系统互相传输信息时无法正确识别,比如中国用GBK编码的字符传输给美国的服务器,而美国服务器只有ASCII编码表,这就很糟糕。
于是,Unicode编码出现了。Unicode编码将世界上各个国家所有的字符全部收录进去,每个字符都用唯一的01字符串表示,这样的话就做到了全世界所有字符的统一编码,各个国家传输信息都用Unicode编码,根据Unicode编码表就可以识别了。
Unicode(即UCS):原始的Unicode是定长的4个字节,比如字母A,用Unicode表示需要4个字节,比ASCII多了3个字节,由于这样做太浪费空间,因此经过优化制定了变长表示字符的UTF编码。
首先应该知道,内存统一用Unicode编码,编码转换都统一转到Unicode,再从Unicode转为其他编码。比如ISO-8859-1和UTF-8之间转换,流程如下:
记住: 不管是爬虫获取的,浏览器收到的还是从本地硬盘读取的,都是二进制,选择正确的编码类型,才能把二进制或者说01序列解析为正确的字符。也就是用何种方式解析01数字。
最近在做加解密这块的开发,使用频率最高的就是 Nodejs 的 crypto 模块了,中间出现了很多种不同的编码方式。一直对这些编码方式处于熟练拼写的状态,但是到底有什么区别处于一知半解,借此机会正好整理下这之间的关系。
在这篇文章中,我描述了JavaScript中常见的5种不良编码习惯。重要的是,本文会给出一些可行的建议,如何的摆脱摆脱这些习惯。
之前一次使用post请求上传图片过多,post请求理论上对参数的大小没有限制,但是服务器有限制,导致上传失败,这时设置一下Tomcat的server.xml里面的maxPostSize就可以了。不过还是建议使用Form表单提交文件
Don Roberts 提出的一条重构准则:第一次做某件事时只管去做;第二次做类似的事时会产生反感,但无论如何还是可以去做;第三次再做类似的事时,你就应该重构
通过改变charset=utf-8中的utf-8就可以改变网页的编码。 一般我们在写CSS文件时候也需要在CSS文件顶部使用@charset utf-8;来定义此CSS文件编码类型。一般html源代码和css文件编码要统一,如果不统一会导致CSS hack
我们知道一个字节可表示的范围是 0 ~ 255(十六进制:0x00 ~ 0xFF), 其中 ASCII 值的范围为 0 ~ 127(十六进制:0x00 ~ 0x7F);而超过 ASCII 范围的 128~255
十几年前,国内 UTF-8 还不太流行,新手开发过程中,乱码问题是很常见的。记得我刚毕业那会,公司的系统是这样的:数据库 MySQL 使用的是 Latin-1 编码(IOS8859-1)
在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求。并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等。
JavaScript 是弱类型的编程语言,我们在写代码的时候充斥着大量的类型转换,在我之前的文章 【JS进阶】你真的掌握变量和类型了吗 中有过相关的介绍,其实上面代码的核心就是用到了下面三个类型转换:
在前端开发中,最常见的字符编码方案是 UTF-8。UTF-8是一种可变长度的 Unicode 编码方案,可以表示几乎所有的字符,并且与 ASCII 兼容。由于互联网的广泛应用和多语言的支持
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!