zoukankan      html  css  js  c++  java
  • 编码的由来

    字符编码的演变

    ASCII码

    一个字符用8个比特(bit)表示=1字节(byte),所以最多可以表示2^8-1=255个字符,英文占用了127位,剩下的供其它语种使用

     位数仍然很少,所以用几个有限的空位映射出一张自己规定的用于简体中文的GB2312和用于繁体中文的big5

    显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

    Unicode(统一码、万国码、单一码)

    是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一

    二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,

    为了节省占用资源,英文字符可只用1byte,解决Unicode都用2byte表示浪费资源的问题

    Unicode是向下兼容的,包含了GBK、G2312等等,但与UTF-8是并行的,不互相兼容

    UTF-8(可变长的字符编码)

    是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:

    ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

    python2.x默认编码是ASCII码,想要使用中文就必须先声明:#! -*- utf-8 -*-或者#coding:utf-8

    python3.x默认编码是Unicode码,所以不用声明

    (注:为了正常运行和显示,有时还要考虑windows的默认编码)

     ASCII 8bit 1byte
    GBK 16bit 2byte
    UNICODE 32bit 4byte
    UTF-8 最少8位 1byte 中文 24bit 3byte
  • 相关阅读:
    UVA 1386 Cellular Automaton
    ZOJ 3331 Process the Tasks
    CodeForces 650B Image Preview
    CodeForces 650A Watchmen
    CodeForces 651B Beautiful Paintings
    CodeForces 651A Joysticks
    HUST 1601 Shepherd
    HUST 1602 Substring
    HUST 1600 Lucky Numbers
    POJ 3991 Seinfeld
  • 原文地址:https://www.cnblogs.com/duanhaoxin/p/9087184.html
Copyright © 2011-2022 走看看