zoukankan      html  css  js  c++  java
  • python笔记:字符编码

    ASCII编码

    知识点:计算机中最小的单位是bit,bit就咱们常说一位二进制,一位二进制要么是0 要么是 1。但是bit这个单位太小了,我们用字节(byte)来表示。换算的规则如下:

    8b = 1B      #小b=bit ; 大B=byte
    1024B = 1KB
    1024KB = 1M
    1024M = 1G
    1024G = 1T 

    在存储英文的时候我们至少需要1个字节(一个字母),就是8位(bit),看下ASCII表中1个字节就可以表示所有的英文所需要的字符,那你会发现1个字节8位,他能存储的最大数据是2的8次方-1 = 255,一个字节最多能表示255个字符。

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

    国际互联网组织提出的Unicode ”万国编码”,Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536

     注:此处说的的是最少2个字节,可能更多。这里还有个问题,使用的字节增加了,那么造成的直接影响就是使用的空间就直接翻倍了。

    UTF-8编码

    为了解决Unicode占用空间问题就出现了UTF-8编码,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:

    1)ascii码中的内容用1个字节保存

    2)欧洲的字符用2个字节保存

    3)东亚的字符用3个字节保存。

    字符转码

    1、Python3中默认就是unicode编码。

    #-*- coding:utf-8 -*-
    
    tim = '你好'
    #unicode转为UTF-8编码
    print(tim.encode('UTF-8'))
    #unicode转为GBK编码
    print(tim.encode('GBK'))

    2、Python2.X中默认是ASCII编码,你在文件中指定编码为UTF-8,但是UTF-8如果你想转GBK的话是不能直接转的,的需要Unicode做一个转接站点。

    #-*- coding:utf-8 -*-
    
    tim = '你好' print chardet.detect(tim) #UTF-8先解码为Unicode编码,然后再从Unicode编码为GBK new_tim = tim.decode('UTF-8').encode('GBK') print chardet.detect(new_tim)

    参考:https://www.cnblogs.com/luotianshuai/articles/5735051.html

  • 相关阅读:
    【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析
    Oracle11g 主机身份证明问题
    html标签的嵌套规则
    提高程序员职场价值的10大技巧
    IT人应当知道的10个行业小内幕
    趣文:如果编程语言是车
    去除inline-block元素间间距的N种方法
    《大型网站SEO优化实践》学习分享
    如何通过预加载器提升网页加载速度
    网页爬虫及其用到的算法和数据结构
  • 原文地址:https://www.cnblogs.com/wmht/p/10676802.html
Copyright © 2011-2022 走看看