浅显总结ASCII Unicode UTF-8的区别

Posted idouble

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅显总结ASCII Unicode UTF-8的区别相关的知识,希望对你有一定的参考价值。

如果觉得此地排版不好,欢迎访问我的博客

浅显总结ASCII Unicode UTF-8的区别

制作表单时,为了追求更好的用户交互体验,常常会有提示性的内容,比如提醒用户字符的限制。由于英文,中文字符的问题,涉及到编码的转换调整。

ASCII码

计算机的早期使用者大多使用英文,而计算机则以二进制来储存;ASCII规定128个英文字符与二进制的对应关系,通常占据一个字节。ASCII编码包括大写英文,小写英文,英文符号等256个字符。

Unicode编码

随着计算机的普及,各个国家都使用,原来的只限于英文的ASCII码不够用,90年代重新制定Unicode编码,也称为统一码,万国码。Unicode字符集 覆盖了所有的字符,为每个字符进行统一编号,分配唯一的字符码

UTF-8

UTF-8是一种编码方式,其他的编码方式譬如:UTF-16等等,用UTF-8为了将Unicode里面的英文字符为1个字节,其他不常见的字符(中日韩文等)用2-4个字节,主要为了减少文件大小,方便文件的传输。

关系

总的来说,ASCII码是英文专属;Unicode码是ASCII码的拓展,即任何语言通用;UTF-8则是对Unicode码的编码方式。

ASCII码和Unicode码都是字符集,不同的是ASCII码和具体的编码方案绑定一起,而Unicode码则与具体的编码方法隔离开,即UTF-8是最为普遍的Unicode编码方案。这样,所谓ASCII码也就成为UTF-8的一部分了。

虽然每个字符在Unicode字符集中都能找到唯一确定的编号,但决定最终字节流的是具体的字符编码(即编码方案是怎么样的)。

技术分享图片

技术分享图片

一些术语

字符集 (charset set):字符的集合,已编号的字符有序的集合

字符码 (code point):字符集中每个字符的数字编码,比如:GBK字符集使用区位码的方式为每个字符编号,定义94*94的矩形,每个汉字放入矩形中,‘中’字放在54区第48位。字符码就是5448

编码 :将字符串转换为字节流

解码 :将字节流解析为字符

字符编码 (character encoding):将字符集中的字符码映射为字节流的一种具体实现方案

计算机字符编码工作方式

计算机内存中,统一使用Unicode编码,当保存到硬盘或传输时,就转换为UTF-8编码

记事本编辑时候,从文件读取UTF-8字符被转换为Unicode字符到内存,保存时则将Unicode转为UTF-8保存到文件

技术分享图片

浏览网页时候,服务器把动态生成的Unicode内容转换为UTF-8再传输到浏览器

技术分享图片

表单验证

  function getLength(str){                   //利用字符串replace方法和正则解决非英文长度问题
      return str.replace(/[^\\x00-\\xff]/g,‘xx‘).length   //匹配超过ASCII码的字符,用16进制表示的
  }
  ?
  function length(){
      var len=0;
      for(var i=0;i<text.value.length;i++){  //str.charCodeAt()返回的是ASCII码
           if(text.value[i].charCodeAt()<0||text.value[i].charCodeAt()>255){
                     len+=2 
           }else{
                     len++
           }
      }
  }

参考资料

  1. https://www.zhihu.com/question/23374078

  2. https://www.cnblogs.com/yuguangchuan/p/4310952.html

  3. http://www.imkevinyang.com/2010/06/%E5%85%B3%E4%BA%8E%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%EF%BC%8C%E4%BD%A0%E6%89%80%E9%9C%80%E8%A6%81%E7%9F%A5%E9%81%93%E7%9A%84.html

以上是关于浅显总结ASCII Unicode UTF-8的区别的主要内容,如果未能解决你的问题,请参考以下文章

字符编码简介:ASCII,Unicode,UTF-8,GB2312及Unicode和UTF-8如何转化

ASCII, Unicode 与 UTF-8

Python的ASCII, GB2312, Unicode , UTF-8 相互转换

编码ascii码,unicode码,utf-8编码

字符编码笔记:ASCII,Unicode和UTF-8

ASCII,Unicode 和 UTF-8