Python 中的编码小结

2009年4月4日 | 分类: 编程语言 | 标签: , ,

这几天在写一个爬虫,抓取指定网站的某些内容,中文网站的编码大概有两种:GB2312和UTF8。这里顺便就把写Python中要注意的一些内容汇聚一下,作为笔记。

1.文件头声明

对于python文件中包含中文的,应该在该文件头进行声明,加入:

1
# -*- coding: utf-8 -*-

一般的python文件头我都是用这一个模板:

1
2
3
4
5
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""docstring
"""

我使用VIM作为编辑器,希望每次创建python文件时都按照上面的模板创建,于是在~/.vim目录下面建了一个templates目录,用来存放模板文件,把上面那个目标拷贝保存为python.tpl,存放在之前创建好的~/.vim目录下。然后在~/.vimrc中添加:

1
autocmd BufNewFile *.py 0r ~/.vim/templates/python.tpl

这样就能保证每次写的python文件能够保持一致的编码方式。更多用vim写python可以参考之前的《 在vim中编写python 》这篇文章。

2.python中的两种字符串

事实上,python是有两种”字符串”,在python2.6的官方文档中,有StringsUnicode Strings 两种Strings。

对于它们之间的相互转换以及GB2312与UTF8的互转,还有encode和decode,在啄木鸟的WIKI上面有详细的解释:

http://wiki.woodpecker.org.cn/moin/PyEnCode

简单的说,其实encode1就是将unicode的字符串转换为特定编码,诸如“GB2312,UTF8”之类。
而decode2就是将本地编码转换为unicode编码的字符串。
所以,比如说要将GB2312转换为UTF8,那么就先将GB2312 decode再encode成UTF8即可,反之亦然。

  1. 编码 []
  2. 解码 []
目前还没有任何评论.

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。