中文,真是中国人的痛啊(在编程方面),在Python的世界了,也是如此。
这里简单记录一下这两天的"痛“,以免忘记(好像是人的天性),同时如果有类似的,也可以作为参考。
简单说一下,目前对python的串的了解。str和unicode是完全不一样的东西,从名字就可以看出,呵呵,不过他们都是从basestring而来,所有有相同的一些行为,如果要判断是string的话,应该使用isinstance(obj,basestring).
一般来说str是跟环境有很大关系的,比如你的操作系统编码,终端/命令行所支持的编码等等。出现”UnicodeEncodeError: 'ascii' codec can't encode characters in position" 这样的异常,多数是跟str相关的。unicode在这方面,表现很好。
str和unicode的转换,也是老掉牙的encode/decode。
[list]
[*]str->unicode is decode
[*]unicode->str is encode
[/list]
我碰到的问题是,收到一个带有utf8编码的unicode,但是我现在需要将其unicode的内容原封不动的转成str,这样我就可以在str使用utf8的编码操作了。非常简单的操作,.encode('iso-8859-1')就可以了。
这里简单记录一下这两天的"痛“,以免忘记(好像是人的天性),同时如果有类似的,也可以作为参考。
简单说一下,目前对python的串的了解。str和unicode是完全不一样的东西,从名字就可以看出,呵呵,不过他们都是从basestring而来,所有有相同的一些行为,如果要判断是string的话,应该使用isinstance(obj,basestring).
一般来说str是跟环境有很大关系的,比如你的操作系统编码,终端/命令行所支持的编码等等。出现”UnicodeEncodeError: 'ascii' codec can't encode characters in position" 这样的异常,多数是跟str相关的。unicode在这方面,表现很好。
str和unicode的转换,也是老掉牙的encode/decode。
[list]
[*]str->unicode is decode
[*]unicode->str is encode
[/list]
我碰到的问题是,收到一个带有utf8编码的unicode,但是我现在需要将其unicode的内容原封不动的转成str,这样我就可以在str使用utf8的编码操作了。非常简单的操作,.encode('iso-8859-1')就可以了。