Python字符串和编码(三)

2016-08-17  本文已影响0人  chensiyu2014

字符编码


  1. 计算机由于是美国人发明,因此只有127个字母编码到计算机里,也就是大小写英文字母、数字和一些符号。该表又称为ASCII编码
  2. 中国制定了GB2312编码来进行中文的编进
  3. 由于各个国家的编码复杂性,Unicode应运而生,Unicode将所有的语言都统一到一套编码里面,这样就不会在有乱码出现。
  4. ASCII编码和Unicode编码的区别是:ASCII编码是1个字节,而Unicode是通常是2个字节。
  5. 尽管Unicode将编码统一了,乱码问题消失了,但是如果基本都是英文的话,用Unicode编码要比ASCII编码多一倍的存储空间,在存储和传输上是否不划算;因此又出现了降Unicode编码转化为“可变成编码”UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码为1个字节,汉字通常是3个字节,只有很生僻的才编码为4-6个字节。
  6. 现在计算机系统通用的字符编码工作:在计算机内存中统一使用Unicode,而需要保存到硬盘或者传输的时候,就转换为UTF-8编码;
  7. 关系例子
字符 ASCII Unicode UTF-8
A 0100000 000000001000001 01000001
x 01001110 00101101 11100100 10111000 10101101

Python字符串


  1. 在最新的Python3版本中,字符串是以Unicode编码的,因此Python支持多种语言
  2. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
  3. Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节,如果要传输或者保存,需要将str转换为字节为单位bytes;对于bytes类型数据用带b前缀的单引号或双印好表示
  4. Pyhont提供encodedecodel两种方式进行字符编码的转换
  5. len()函数计算str是字符数,计算bytes则为字节数
  6. 为了避免乱码问题,应当时钟坚持使用UTF-8编码对str和bytes转换

格式化


  1. Python的格式化方式和C语言保持一致用%实现
  2. 字符串里面的%是一个普通的字符则需要转移用%%来表示%

总结


牢记采用UTF-8来编码,乱码将不再是问题,了解了ASCII、Unicode以及UTF-8的历史不错

上一篇下一篇

猜你喜欢

热点阅读