使用文本编辑器编译python出现乱码问题

1、

编译如下代码

# -*- coding:UTF-8 -*-

print "My name is %s and weight is %d kg!" %('Emily',46)
print "{1} {0}".format("hello","world")
print ("网站名:{name},地址:{url}".format(name="知乎",url='www.zhihu.com'))

结果:

2、疑惑点:已经在编辑器开头注明使用utf-8编码,并且文件保存也使用了utf-8的格式,依旧乱码

3、测试:

# -*- coding:UTF-8 -*-
import sys

print sys.getdefaultencoding() + "  - sys.getdefaultencoding()"
print sys.stdout.encoding + " - sys.stdout.encoding:"

结果:

可以看到默认编码是ascii,locale的编码是cp936也就是GBK,print会用sys.stdout.encoding去encode()成字节流,交给terminal显示。所以locale需要与terminal一致,才能正确print出中文。

4、解决方法

将含有中文的print语句改为:

print ("网站名:{name},地址:{url}".decode('utf-8').encode('gbk').format(name="知乎".decode('utf-8').encode('gbk'),url='www.zhihu.com'))

结果:

这个方法比较繁琐,网上推荐使用:

reload(sys)   
sys.setdefaultencoding('utf8')   
但我尝试没有效果,不知道是为什么

猜你喜欢

转载自blog.csdn.net/ack_Finding/article/details/80864343
今日推荐