字节流和字符串
当使用Python定义一个字符串时,实际会存储一个字节串:
"abc"--[97][98][99]
python2.x默认会把所有的字符串当做ASCII码来对待,但是当字节值>127时,默认解析便会出现问题。
x="abc"+chr(150)
print repr(x)
#'abc\x96'
u"Hello" + x
#UnicodeDecodeError: 'ASCII' codec can't decode byte
这就需要我们拿到一个字节流后,调用它的解码方式来创建字符串(Unicode对象)
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对象然后写入到文件。
文章讲述了在Python中处理字节流和字符串时遇到的编码问题。Python2.x默认将字符串视为ASCII,当遇到超过127的字节值时会出现解析问题。为了解决这个问题,需要对字节流进行解码,如使用`decode(utf-8)`将其转换为Unicode对象。同时,文章提到了`codecs`模块在处理文件读写时的便利性,它可以根据指定编码自动转化内容。

被折叠的 条评论
为什么被折叠?



