字节流和字符串
当使用 Python定义一个字符串时,实际会存储一个字节串:
//汇站网 https://www.huizhanii.com
"abc"--[97][98][99]
python2.x 默认会把所有的字符串当做 ASCII 码来对待,但是当字节值>127 时,默认解析便会出现问题。
//汇站网 https://www.huizhanii.com
x="abc"+chr(150)
print repr(x)
#'abc\x96'
u"Hello" + x
#UnicodeDecodeError: 'ASCII' codec can't decode byte
这就需要我们拿到一个字节流后,调用它的解码方式来创建字符串(Unicode 对象)
//汇站网 https://www.huizhanii.com
x="abc\x80\x93"
x=x.decode("utf-8")
print type(x)
<type 'unicode'>
y= "abc"+char(150)
y=y.decode("windows-1252")
print type(y)
<type 'unicode'>
print x+ y
#abc-abc-
codecs 模块
在处理字节流的时候可以提供很大的帮助。你可以用定义的编码来打开文件并且你从文件里读取的内容会被自动转化为 Unicode 对象,也可以以指定编码处理 Unicode 对象然后写入到文件。
//汇站网 https://www.huizhanii.com
import codecs
f=codecs.open('0.txt', 'w', 'utf-8')
f.write(u"\u2013")
f.close()
转载请注明:汇站网 » Python 编码记录与学习笔记