在IDLE中执行下面代码,中文显示正常:

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

st=raw_input("请输入内容")
print st

但在CMD中执行e:\hello.py,则中文会出现乱码,是什么原因呢?

从下图可以看出utf-8和gbk都可以通过编码和解码与unicode进行转换,那么如果utf-8转化为gbk该怎么办呢?首先,utf-8通过解码转化为unicode,然后通过unicode编码转化为gbk

现在回答上面的问题,为什么CMD会出现乱码呢?这是因为我们写的py程序是utf-8编码的,通过python程序编译后,也是编译为utf-8编码,而这时cmd是通过gbk进行解析的,gbk解析utf-8,当然会出现乱码了。

知道原因后,我们来看解决方案:

1、2.7中把程序中的汉字转为gbk编码:

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

concent = "请输入内容:"
#将字符串由utf-8解码为unicode
c_unicode = concent.decode("utf-8")
#将解码后的字符串编码为gbk
c_gbk = c_unicode.encode("gbk")
st=raw_input(c_gbk)
print st

其实只需要把utf-8转化为unicode编码就可以,因为当windows的CMD遇到unicode编码时,会自动给你转化为gbk编码,所以程序也可以这样:

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

concent = "请输入内容:"
#将字符串由utf-8解码为unicode
c_unicode = concent.decode("utf-8")
st=raw_input(c_unicode)
print st

另外python3x中没有unicode类型,但可以支持从utf-8直接解码转换为gbk,代码如下:

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

concent = "请输入内容:"
#将字符串由utf-8解码为gbk
c_gbk = concent.decode("gbk")
st=raw_input(gbk)
print(st)

2、将CMD终端改为UTF-8格式

命令介绍:

chcp 65001   #换成utf-8代码页

chcp 936       #换成默认的gbk 
chcp 437       #美国英语 
一般默认为gbk,若要修改成 utf-8,则需要: 
1)、cmd窗口输入: 
chcp 65001 
2)、修改cmd属性: 
选择字体为“Lucida Console”
 
3、改为UTF-8后可能出现字符重叠或不能输入中文的现象,调整回GBK格式的方法
  1. 右击cmd窗口,点默认值

    选项默认代码页,选择936

  2.  在cmd中输入:

    chcp 936

    注:chcp命令用于显示或设置活动代码页编号。

  3.  新建文本,复制粘贴以下代码,把文件类型改成reg :Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8

    之后双击运行。点是。

  4.  运行regedit,打开注册表。

    HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe中找到CodePage

    双击打开CodePage,输入3a8

【python之路2】CMD中执行python程序中文显示乱码的更多相关文章

  1. 如何在cmd中执行python文件

    打开cmd终端 输入python     然后再输入要执行文件的路径 就可以把python文件运行起来                                                  ...

  2. 命令行模式(CMD)下mysql查询中文显示乱码问题

    mysql的默认编码已经设置为utf-8,用其他工具(代码,mysql workbench)写入或读出时显示正常,但用cmd查询时显示为乱码. 2.原因:mysql的客户端根本无法以utf-8的形式返 ...

  3. Python之路 - Socket实现远程执行命令

    Python之路 - Socket实现远程执行命令 os模块实现

  4. python代码在linux终端中执行报错:Unable to init server: Could not connect: Connection refused

    python代码在linux终端中执行时报错: Unable to init server: Could not connect: Connection refused Unable to init ...

  5. 记一次解决cmd中执行java提示"找不到或无法加载主类"的问题

    今天遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”.现将该问题的原因以及解决办法记录一下. 先理解一下系统变量path和clas ...

  6. cmd中执行jar文件命令(待参数)

    cmd中执行jar文件命令(待参数) 1,jar文件路径:F:\products 2,cmd命令: --两个日期参数(空格隔开) java -jar F:\products\analysis.jar ...

  7. 记录自己在 cmd 中执行 jar 文件遇到的一些错误

    记录自己在 cmd 中执行 jar 文件遇到的一些错误 场景: 请求接口,解析接口返回的 JSON 字符串并插入到我们的数据库里面. 情况: 项目在 eclipse 中正常运行,打成 jar 包后在 ...

  8. cmd中执行mvn help:system报错的解决办法

    [ERROR] No plugin found for prefix 'help' in the current project and in the plugin groups [org.apach ...

  9. python matplotlib 中文显示乱码设置

    python matplotlib 中文显示乱码设置 原因:是matplotlib库中没有中文字体.1 解决方案:1.进入C:\Anaconda64\Lib\site-packages\matplot ...

随机推荐

  1. Kafka 文档用例

    1.2 用例 以下是一些Kafka 常见的用例.关于功能方面的一些概念,可以看这篇博客:http://engineering.linkedin.com/distributed-systems/log- ...

  2. MySQL升级

    MySQL的升级相对来说还是比较简单的. 它支持两种方式的升级: 原地升级(In-place Upgrade) 关闭数据库,替换旧的二进制文件,重启数据库,执行mysql_upgrade 逻辑升级(L ...

  3. 分布式服务协调员zookeeper - 应用场景和监控

    zookeeper在分布式系统中作为协调员的角色,可应用于Leader选举.分布式锁.配置管理等服务的实现.以下我们从zookeeper提供的API.应用场景和监控三方面学习和了解zookeeper( ...

  4. HTTPS那些事(一)HTTPS原理

    转载来自:http://www.guokr.com/post/114121/ 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传 ...

  5. FFmpeg学习1:视频解码

    在视频解码前,先了解以下几个基本的概念: 编解码器(CODEC):能够进行视频和音频压缩(CO)与解压缩(DEC),是视频编解码的核心部分. 容器/多媒体文件(Container/File):没有了解 ...

  6. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...

  7. MacOS平台下@rpath在动态链接库中的应用

    一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...

  8. 导出数据到Excel --使用ExcelReport有感

    先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...

  9. Devexpress Ribbon Add Logo

    一直在网上找类似的效果.在Devpexress控件里面的这个是一个Demo的.没法查看源代码.也不知道怎么写的.所以就在网上搜索了半天的. 终于找到类似的解决办法. 可以使用重绘制的办法的来解决. [ ...

  10. bzoj4518--斜率优化DP

    设x[i]为第i天走的路程,s为路程总和,则: ans=[(s/m-x[1])^2+(s/m-x[2])^2+(s/m-x[3])^2+...+(s/m-x[m])^2]*m =[(s-x[1]*m) ...