您的位置:首页 > 编程语言 > Python开发

python 处理字符编码问题

2014-12-16 21:09 399 查看
今天好不容易重新开始写Python做实验,结果被字符编码虐的体无完肤。其实之前就已经比较清楚python处理字符编码的套路,但是今天白天反复的出现can't encode/decode ..., the original code not in 178之类的提示,甚是无力,后来偶尔使用了一下sys.setdefaultencoding('utf8')就解决了全部问题,真是不解。

下面还是总结一下Python几个编码设置的含义吧。

1. #coding=utf8

这种形式的注释告诉解释器,应该以coding指定的编码解析源文件,也就是指定脚本文件本身使用的编码。

2. sys.setdefaultencoding('utf8')

这种方式用于告诉python解释器应该以何种编码的方式解释str类型的字符串。python解释器默认的是'ascii'编码,可以通过sys.getdefaultencoding()的方式获得该编码信息。

如果想要使用sys.setdefaultencoding('utf8')重新指定str编码,那么需要reload(sys)才能调用setdefaultencoding()方法。

3. str和unicode

str和unicode是两个不同的工厂方法,产生str或者unicode对象。str方法相当于从一种编码encode到默认编码,而unicode相当于从一种编码decode到默认编码。需要注意的是通常来说默认编码是ascii的。

4. 处理字符串的套路

程序内部尽量全部使用unicode编码,也就是如果是一个字符串,则用u来修饰,如u'你好'。如果需要从文件中读入字符串内容,则decode成unicode;如果需要写出到文件或者输出,则encode到相应的编码即可。

希望后面在用python处理字符串编码问题的时候能够顺利解决吧,God bless me.

参考链接
http://www.cnblogs.com/huxi/articles/1897271.html http://foofish.net/blog/16/understanding-python-charset
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python encoding problem