版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89944870

本来脱身python2的代码困扰了,但有时候python环境是2的环境,还是逃不开中文输出的问题。

python2.7环境下:

>>> import sys,locale

>>> sys.getdefaultencoding()

'ascii'

>>> locale.getdefaultlocale()

('zh_CN', 'cp936')

>>> sys.stdin.encoding

'cp936'

>>> sys.stdout.encoding

'cp936'

python3.7环境下:

>>> import sys,locale

>>> sys.getdefaultencoding()

'utf-8'

>>> locale.getdefaultlocale()

('zh_CN', 'cp936')

>>> sys.stdin.encoding

'utf-8'

>>> sys.stdout.encoding

'utf-8'

由此对比可得,python3的标准输出默认utf-8所以中文输出没问题,但python2.7的是cp936所以输出不是我们希望的结果。

那好,我们就改了他的编码格式。

import sys

reload(sys)

sys.setdefaultencoding('utf8')

然而python2的下面执行过上面的代码后,标准输入输出的编码格式还是原来的。

治标解决办法如下:

#此为utf-8编码的文本转码为cp936

print( '中文输出:'.decode('utf-8').encode('cp936') )

或者

#字符串前加上u

print( u'你好')

为什么是utf-8转为cp936就可以了呢?为什么是这两个编码格式?

python文件中如果需要有中文,则开头必须有一行声明:

# -*- coding: utf-8 -*-

或者

# coding: utf-8

这是表明本文档的编码格式是utf-8,所以代码中的中文“中文输出:”是utf-8的编码格式,如果我们要看到原汁原味的文本, 则必须和标准输出的编码格式相同。上文中我们查看到,python2的标准输出是cp936,python3的是utf-8,这表明python3的可以直接输出,python2的需要把utf-8转码cp936。

没错,明眼人也看到了,我上文说的是治标办法,那么治本办法呢?

理论上,我们应该修改标准输入输出的编码格式为utf-8,那就一劳永逸了。即:sys.stdout.encoding的值是utf-8。这个怎么设置?本人还不知道。有知道的烦请告知我一声。

附注:如果是先输入再输出,那么我们一般不用考虑编码格式,不管标准输入输出是什么格式,只要支持中文文本,只要输入和输出格式相同,那么我输入的是什么,输出的肯定也是什么。这个情况下不需要转码。

独孤尚良dugushangliang——著

python语言支持中文输出_python2输出汉字的解决办法暨python2/python3的编码环境参数的查看-Go语言中文社区...相关推荐

  1. Intellij IDEA 重置所有工具栏 Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法

    Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法 在 Debug 工具窗口,如图点击左侧重置布局图标,你的console窗口就还原了.

  2. NotePad 打开文件 出现中文汉字乱码 解决办法

    NotePad 打开文件 出现中文汉字乱码 解决办法 欢迎关注:程序员财富自由之路 现象: 出现中文汉字乱码: 解决办法: 先别着急用notepad修改编码 1. 用windows系统自带记事本打开, ...

  3. 为什么输入法显示中文打不出中文_搜狗输入法打不出汉字,无法打出汉字的解决办法...

    有时候搜狗输入法无法输入中文,打字打出的都是英文字母,哪么搜狗输入法打不出汉字,无法打出汉字怎么办呢?这种现象特别容易出现在txt文本,或者word文档里,不能及时解决会影响工作效率.下面大家就一起来 ...

  4. 针对AttributeError: ‘tensorflow.python.framework.ops.EagerTensor‘ ....no attribute ‘reshape‘问题的解决办法。

    操作系统:Win10,编译工具:notebook,语言:python 在学习Mnist手写数据集的时候,遇到这种问题.使用Tensorflow2.2-gpu版本 plt.figure(figsize= ...

  5. ajax返回值中文变成问号,用ajax传递json到前台中文出现问号乱码问题的解决办法...

    用ajax传递json到前台中文出现问号乱码问题的解决办法 我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台 中文就变成了问号. 后来 ...

  6. 中文字符乱码的原因及解决办法

    中文字符乱码的原因及解决办法 java的内核是Unicode的,也就是说,在程序处理字符时是用Unicode来表示字符的,但是文件和流的保存方式是使用字节流的.在java的基本数据类型中,char是U ...

  7. Office 2007 ppt 不能输入汉字问题 解决办法 很有效

    本人使用方法1,问题解决! 以下为转载. 不止遇到过一次如题所示问题,很是恼火,网上的解决办法,诸如开启高级语音服务.添加微乳拼音输入法,都不奏效.ppt中只能输入字母,无法输入汉字的解决办法: 转1 ...

  8. 小米4支持html5,针对在webview模式中,小米魅族手机不支持html5原生video的control的解决办法![原创]...

    其实,解决办法就是,重新写个control控制功能,.同样用流行的video.js可以实现 第一步就是增加个播放的图片..要不然没有按钮多难看! webkit-playsinline> 上面的视 ...

  9. Ogre读取中文路径名的文件失败的解决办法

    Ogre的文件读取是使用的标准库的io库读取的,众所周知的是,在vs2005是存在着bug的. 因此想要一劳永逸的解决这个办法唯有去修改Ogre的源代码,以下为修改方法: 打开OgreFileSyst ...

最新文章

  1. elasticsearch: 权威指南_你还不会Elasticsearch的CUD?
  2. 2.1.4 对梯度消失和梯度爆炸的近似解决方案
  3. Ubuntu 16.04 把Dock放到桌面底部
  4. SQL Server 编写自动增长的字符串型主键
  5. 前端学习(1523):vue-cli项目目录介绍
  6. Qt文档阅读笔记-QNetworkProxy::ProxyType解析(Qt设置Fiddler代理)
  7. 猴子吃桃问题java思路_java编程题猴子吃桃问题答案
  8. 金山Andorid面试总结
  9. 0x8000FFFF 错误的解决方式
  10. OA是什么?OA系统,OA,OA解决方案有哪些,OA有什么功能,OA有什么作用
  11. Intellij IDEA社区版下载与安装教程
  12. Lambada表达式的用法
  13. Android Crash详解
  14. 51nod 1113 矩阵快速幂 (矩阵的n次方)
  15. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推
  16. 训练softmax分类器实例_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...
  17. qt mysql 不能创建表_Qt 数据库创建表失败原因之数据库关键字
  18. 新一代智能搜索引擎,让搜索一击即中
  19. 《风火之旅》天降喜运,财神PK外挂
  20. 百度地图自动检索获取地理位置(经纬度)

热门文章

  1. 电脑卡住点什么都没反应怎么解决
  2. 广州奶茶饮品培训学校哪家好?广州学奶茶技能要多少钱?
  3. 1.3 熟悉 Ubuntu 桌面环境
  4. 怎么禁止恢复微信聊天记录?学会这几招以备不时之需
  5. CTC5610-VPLS开发
  6. tcl-debug的下载与安装及NSG2的下载与使用
  7. [原创]WIA 学习笔记
  8. Ural 2037. Richness of binary words (打表+构造)
  9. 微信公众号注册操作流程
  10. Tenda u6 免驱无线网卡无法连接这个网络解决办法