Python 学习日记-01.中文编码声明# coding:UTF-8

之前写python程序的时候老是出现中文打印乱码的问题,在网上搜了一些资料,说是编解码的问题。自己改了一下也能用,也就没有去深究。但是现在发现还是有很多问题,比如这个:

# coding: gbk
import pdb

s = '2'
n = int(s)
#pdb.set_trace()#在这里会自动暂停进入pdb调试环境
print 10/n
s = "我爱方"
print s

看起来没什么问题,文件头有编码声明,表示以gbk编码,但是下面的s打印出来显示有错误:


在网上查了点资料,普遍看法是中文系统的cmd中采用的是gbk编码方式,而notepad++中默认采用的是UTF-8编码所以会出错。

接下来把gbk改成UTF - 8试试。

# coding: utf - 8
import pdb

s = '2'
n = int(s)
#pdb.set_trace()#在这里会自动暂停进入pdb调试环境
print 10/n
s = "我爱方"
print s

运行没有报错,但是打印出来还是乱码:


说明编码还是有问题。

在网上找了下解决方法,有一个试了下可以用:

# coding: UTF-8
import pdb

s = '2'
n = int(s)
#pdb.set_trace()#在这里会自动暂停进入pdb调试环境
print 10/n
s = "我爱方"
print s.decode(encoding = 'UTF-8')
就是在s后面加一个解码声明,解码方式设置成UTF-8,运行一下:

现在显示正常了。这个方法确实很麻烦,总不能每次打印都写一个解码声明把,感觉有点麻烦。网上有说把cmd的编码方式改成UTF-8 的,试了下还是显示错误。先打开cmd,再输入chcp,会显示当前编码方式,我的显示的是936,也就是GBK编码。UTF-8的是65001,输入chcp 65001,编码方式变成了utf-8,鼠标放到边框上点击右键,依次选择属性,字体,选择Lucida Console,设置UTF-8成功。但是运行程序显示Unknown encoding:cpUTF-8,还是不行。

看过一个讲编码清楚的,至少比我好,想深入了解的可以看看:系统编码,文件编码,python编码


目前基本上就是这样了,就是s = "你要打印的中文",然后打印的时候:print s.decode(encoding = 'utf-8'),这样在控制台打印出来就是正常的了。当然直接在控制台的Cpython中是没有这个问题的,因为默认采用ASCII编码。打开控制台,输入python,当然你安装了python的话就会进入CPython,然后输入print sys.getdefaultencoding(),就会返回编码方式,如下图


快乐时光总是过得很快,珍惜时光,好好生活。

See you!







你可能感兴趣的:(python,编码,utf-8,乱码,调试)