Python 中的编码小结
这几天在写一个爬虫,抓取指定网站的某些内容,中文网站的编码大概有两种: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的官方文档中,有Strings 和Unicode Strings 两种Strings。
对于它们之间的相互转换以及GB2312与UTF8的互转,还有encode和decode,在啄木鸟的WIKI上面有详细的解释:
简单的说,其实encode1就是将unicode的字符串转换为特定编码,诸如“GB2312,UTF8”之类。
而decode2就是将本地编码转换为unicode编码的字符串。
所以,比如说要将GB2312转换为UTF8,那么就先将GB2312 decode再encode成UTF8即可,反之亦然。
发表评论
| Trackback
