No activity today, make something!
Simplest Python python unicode

20150113073827 guodepei  

概念

unicode是内部编码,utf8、gb2312是外部编码

encode 和 decode

输出、网络传输、打印,要把unicode encode成某种编码方式

print s.encode('utf8')
content.encode('utf-8')

unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为unicode编码

代码中的编码

代码中字符串的默认编码与代码文件本身的编码一致。 如:s='中文' 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。

如果字符串是这样定义:s=u'中文' 则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。

coding的编码

# coding=utf-8
# -*- coding: utf-8 -*-

当你在py文件的第一行中,写了这句话,并确实按照这个编码保存了文本的话,那么这句话有以下几个功能。

  • 使得词法分析器能正常运作,对于注释中的中文不报错了。
  • 对于u"中文"这样literal string能知道两个引号中的内容是utf8编码的,然后能正确转换成unicode
  • "中文"对于这样的literal string你会知道,这中间的内容是utf8编码,然后就可以正确转换成其它编码或unicode了。

原则

外部进来的字符串,尽可能第一时间转成unicode。

把Unicode应用到实际中注意一下四点:

  • 程序中出现字符串时一定要加一个前缀u
  • 不要用str()函数,用Unicode()代替
  • 不要用过时的string模块。如果传给它非ASCII码,它会把一切搞砸。
  • 不到必须时不要在你的程序里编解码Unicode字符,只在你要写入文件或者数据库或者网络时,才调用encode()函数和decode()函数。