ascii编码和unicode编码的问题
前面加上
import sys
reload(sys)
sys.setdefaultencoding('utf8')
python将unicode和str互相转化
a.encode('UTF-8') 还是utf编码,但是匹配后还是有问题
前面# -*- coding: utf-8 -*-就可以不用转化
正则匹配unicode
原因:
Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常
字符流是unicode的格式会报这种错误。所以解决方法就是修改默认编码,需要注意的是需要先调用reload方法。
ASCII 码
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
ASCII 码一共规定了128个字符的编码,比如空格SPACE
是32(二进制00100000
),大写的字母A
是65(二进制01000001
)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0
。
Unicode 是「字符集」
如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。
Unicode 当然是一个很大的集合,现在的规模可以容纳100多万个符号。
Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
UTF-8 是「编码规则」
UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用,UTF-8 是 Unicode 的实现方式之一。