zoukankan      html  css  js  c++  java
  • 以前端的角度看字符编码

    做了2年前端,一直对字符编码不够理解,最近要做图片上传,所以花了点时间把这个给了解清楚。

    首先,计算机中数据存储的最小单位是位,英文是bit,简记为b,每个0或1就是一个位。一个字节由8个位组成,比如11011100,所以一个字节可以表示的范围是00000000~11111111,转换成十进制就是0~255。

    什么是ASCII码?

    把所有的空格、标点符号、数字、英文大小写字母用连续的字节来表示,从0一直编到了第127号,这个编码方案就是”ASCII”编码,比如字母a的ascii编码就是97.但有些国家的语言不都是英文字母,所以把127号之后的空位也用来表示字符,一直编码到255,所以从128到255的这些字符集被称为‘扩展字符集’。

    什么是GB2312?

    中国人因为没有可以利用的字节来表示汉字,所以定义了一个规则,一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字。但这个规则是中国自己定义的,并不适合其他国家使用。

    什么是unicode?

    为了统一全世界的编码, ISO (国际标谁化组织)的国际组织废了所有的地区性编码方案,推出了“Universal Multiple-Octet Coded Character Set,即unicode,规定了必须用两个字节,也就是16位来统一表示所有的字符。简单来说,就是用0-65535这些数字来对应世界上所有的字符。对于ASCII里的127位之前的字符,unicode包持其原编码不变,只是将其长度由原 来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在 保存英文文本时会多浪费一倍的空间。

    什么是UTF-8和UTF-16?

    为了把字符对应的数字保存在计算机中,主要有UTF-8和UTF-16两种方式。UTF-16是把所有的字符对应的数字都用2个字节来表示,缺点是英文字母明明用一个字节来表示就够了,会白白多浪费一倍的空间。
    于是就有了UTF-8,这个8很容易误导人,不是用一个字节表示一个字符,而是用可变的字节数来表示字符,可能一个,也可能2个或三个,最大是3个。比如英文字符用一个字节表示,中午字符用2个或三个字节来表示。


     
     
     
  • 相关阅读:
    增强资源管理器右键功能,含源代码
    VC中结构体的内存布局
    进程间共享句柄三种方式
    Delphi获取CPU CPUID《转》
    Delphi中判断WebBrowser的页面是否加载完成 《转》
    Delphi 防止程序多次运行《转》
    界面显示后延时运行代码《转》
    界面显示后延时运行代码《转》
    DIV布局-DIV高度不同自动换行并对齐《转》
    Delphi 语句块《LceMeaning》
  • 原文地址:https://www.cnblogs.com/soraly/p/7987386.html
Copyright © 2011-2022 走看看