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

Python 文字编码的处理

2014-07-04 00:00 141 查看
摘要: 对于Python中文字编码的处理非常让人头疼,要确保 ​1. Python文件的编码, 2. 运行时的编码,​3. 输入输出流的编码的一致性。做到1.2两点非常容易,用Sublime就可以处理好。对于3的处理,​要做到这一点还是非常困难的,最关键的一点是因为在Python中你会使用非常多的第三方库。网上讲解Python文字编码的博客非常多,看得我云里雾里的。那有没有简便一点的处理办法呢?

Python版本:2.7

对于Python中文字编码的处理非常让人头疼,要确保

1. Python文件的编码,

2. 运行时的编码,

3. 输入输出流的编码的一致性。

做到1.2两点非常容易,用Sublime就可以处理好。对于3的处理,要做到这一点还是非常困难的,最关键的一点是因为在Python中你会使用非常多的第三方库。网上讲解Python文字编码的博客非常多,看得我云里雾里的。那有没有简便一点的处理办法呢?

首先声明下我的应用:我是在用Scrapy进行抓取网站的时候发现文字编码非常的杂乱,还有就是在用Libtorrent处理BT种子的时候,提取BT种子的文件名也会出错。这个是我以前的处理方式:

def decode(name):
coding = ['utf-8', 'gbk', 'gb2312', 'Big5']
for c in coding:
try:
return name.decode(c)
except UnicodeDecodeError:
continue
else:
return name

这样处理BT种子的结果如下:


那怎么用最简洁的方式处理呢?

1. 对于抓取的时候,用Scrapy自带的库

from w3lib.encoding import html_to_unicode

2. 对于处理BT种子编码的时候,用Django的库:

from django.utils.encoding import force_unicode

3. 然后一切就完美了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息