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')
但我尝试没有效果,不知道是为什么