1.直接使用 u'是' 形式,指明以unicode编码,解码方式会以顶部 #coding定义的编码方式,如果不写,以操作系统当前编码方法,建议写上#coding,因为要让操作系统编码和源文件编码经常会不一样。推荐使用这种方式
2.输出时指定解码方法 print '是'.decode("utf8") ,必须和保存的编码一致,忽略#coding的定义
3.将#coding 和保存编码改为和操作系统一样的编码,就可以直接print '是' 正常输出,也不推荐,因为需要事先知道操作系统编码,复制到其他电脑上,操作系统编码不一样就会出错
#coding=gbk
print u'是' #方法1
print '是'.decode("gbk") #方法2
print '是' #方法3
注意:
#coding指明的编码必须和保存的编码一样,不然1,3方法都会产生错误,原因也是保存编码和读取编码不一致。一般IDE能够自动根据#coding保存文件
如果是Python文件用编辑器打开时出现乱码,将编辑器调试成utf-8或者gb2312显示。如果是运行Python文件时显示乱码,则修改Python文件,在文件顶部添加:# code = utf-8显示乱码的主要原因是:字符串编码集问题其原因详细:
Windows 下的字符串编码集为GBK 而我们的Python字符串一般是 UTF-8
代码详情:
#!/usr/bin/python
# coding: utf-8
os_char='gb18030' # 定义转换类型为GB18030
print u"我是字符串" # 直接打印Unicode
print u"我是字符串".encode(os_char) # 转换为GB18030编码
print "我是字符串".decode("utf-8").encode(os_char) # 先转换为UTF-8 再转换为GB18030
备注:
之前的第一行(#!) 为Linux环境下的执行文件声明 如 Bash 的声明为 #!/bin/bash
第二行注明编码集为GB18030
Linux下的编码集为 UTF-8