zoukankan      html  css  js  c++  java
  • 浅谈字符集ASCII,UNICODE,UTF-8

      这几天在面试的时候,被问到一些关于字符的问题。回头了解了一下,发现字符集也是一个挺深的坑。由于篇幅有限,就只了解了ASCII,UNICODE和UTF-8。

      ASCII码相信大家都比较熟悉,首先它是由一个字节来表示的,一共八位,可以表示256个字符,但是这玩意是由美国人那边制定的,对于他们来说,只需要128个字符就足够,于是他们把第一位设为0,其他位才用来表示字符。

      但是在全球互联网化后,这个字符集就不够用了,因为各个国家语言字符不同,ASCII满足不了。一个字节也不够表示,所以必须要有多个字符表示的。像我们国家的中文简体,一般就采用GB2312,然而不统一的字符集,导致不同国家在通信时会出现乱码,这其实就是因为采用的字符集不同,解析出来的结果也不同。所以这个时候,UNICODE这个字符集出现了,它将所有的字符都收录了,每个字符都有对应独一无二的表示方法。但是UNICODE这个字符集有一个最大的缺点,那就是,它的存储方式。由于表示的字符太大,它必须由多个字节组成,而且在区分ASCII码和UNICDOE也有困难,计算机并不知道当前这个字节是用来表示ASCII码还是UNICODE的一部分。

      UTF-8的出现,弥补了这个不足,它是由不定长的字节组成的,字节的长度是由第一个字节的前n位确定的,如果要用四个字节表示,它会在第一个字节的前四位用1来表示,第五位用0来表示。计算机拿到之后,计算第一个字节前面有多少个1,就拿多少个字节来表示这个字符,而且后面每个字节的前两位都是由10开头。

      下一次我再研究一下字符集UTF-16,看看和UTF-8有什么区别,下次再研究。

  • 相关阅读:
    高效真实的云渲染算法 【转】
    网络字节顺序 【转】
    Windows网络编程 2 【转】
    windows 网络编程[转]
    电信诈骗
    winsock 收发广播包 【转】
    windows核心编程 DLL技术 【转】
    CityEngine结合ArcGIS制作地质体web场景 [转]
    共有49款Windows GUI开发框架开源软件 【转】
    详解分级基金(杠杆基金)【精华】 【转】
  • 原文地址:https://www.cnblogs.com/empty-run/p/5895974.html
Copyright © 2011-2022 走看看