python 乱码问题

Python015

python 乱码问题,第1张

解决方法

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