zoukankan      html  css  js  c++  java
  • 浅显总结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

  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/iDouble/p/8467738.html
Copyright © 2011-2022 走看看