找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 737|回复: 13

[已解决] windows cmd 下 中文乱码chcp 65001 和unknown encoding cp65001

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang 发表于 2017-12-14 13:52:34 | 显示全部楼层 |阅读模式
本帖最后由 bigpang 于 2017-12-18 17:25 编辑

现象描述:
在windows 下运行python程序(python2)时,输出的中文出错了。输出的方式是直接使用
  1. print "中文"
复制代码
这种形式,未进行其他设置。

搜索到的一种方法,也是曾经确实有效的方法:chcp 65001 ,然后修改字体。

但是本次操作的时候,在如上修改后,出现了如下错误:

  1. print 'hello'

  2. LookupError: unknown encoding: cp65001
复制代码
这种现象的解决办法是:chcp 936 。可是如果回到936,第一个问题又来了。

想问的(度娘搜不到结果):
1- 这种问题的原因是我的windows下缺少什么东西么?比如65001的某个字符集什么的。

2- 如果这个问题可以解决,我该如何去解决,比如,我可以下载一个字符集安装这类的?

谢谢大家,以及,万能的版主大大们

添加一个偶然发现的现象:
当我用python3.X的使用,65001 又是可行的,字母,中文都能输出。
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-14 14:29:24 | 显示全部楼层
研究python3吧,python2到2019年就不维护了,python3的兼容性更好
回复 支持 反对

使用道具 举报

0

主题

287

帖子

287

积分

侠客

积分
287
sheeboard 发表于 2017-12-14 14:59:22 | 显示全部楼层
2的默认编码是ascii,3的默认编码是utf8。
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang  楼主| 发表于 2017-12-15 09:01:03 | 显示全部楼层
剑心无痕 发表于 2017-12-14 14:29
研究python3吧,python2到2019年就不维护了,python3的兼容性更好

我知道2在19年将不在维护。但现在工作里面用的是2。显示乱码不好调试。
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang  楼主| 发表于 2017-12-15 09:01:32 | 显示全部楼层
sheeboard 发表于 2017-12-14 14:59
2的默认编码是ascii,3的默认编码是utf8。

这个我知道了,谢谢~
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang  楼主| 发表于 2017-12-15 09:02:26 | 显示全部楼层
剑心无痕 发表于 2017-12-14 14:29
研究python3吧,python2到2019年就不维护了,python3的兼容性更好

意思就是,在2的背景下,我想在windows下cmd里面改作utf8中文不乱码,目前是没有操作的,对么?
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-15 10:26:06 | 显示全部楼层
bigpang 发表于 2017-12-15 09:02
意思就是,在2的背景下,我想在windows下cmd里面改作utf8中文不乱码,目前是没有操作的,对么? ...

肯定有解决办法,我没有windows的Python2的环境,试试print u'中文'?
linux和mac直接print '中文'都没有问题
回复 支持 反对

使用道具 举报

0

主题

287

帖子

287

积分

侠客

积分
287
sheeboard 发表于 2017-12-15 10:34:29 | 显示全部楼层
python2的设置默认编码
Screenshot from 2017-12-15 10-33-49.png
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang  楼主| 发表于 2017-12-15 11:30:58 | 显示全部楼层
剑心无痕 发表于 2017-12-15 10:26
肯定有解决办法,我没有windows的Python2的环境,试试print u'中文'?
linux和mac直接print '中文'都没有 ...

可行。
我该如何去理解,输出时,各种编码的转换?我希望我能理解它,因为之前尝试记住它,但是,并没有理解的状态下,记住不牢。
回复 支持 反对

使用道具 举报

7

主题

33

帖子

33

积分

贫民

积分
33
bigpang  楼主| 发表于 2017-12-15 11:32:32 | 显示全部楼层
sheeboard 发表于 2017-12-15 10:34
python2的设置默认编码

这里setdefaultencoding的方法,之前看到别人用过,确实能在输出的时候,避免很多问题。这个改变的是什么?它在str输出的过程中,改变了哪个步骤时的默认值?可以给我讲讲么,我有点看不懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表