在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. require() 源码解读

    2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式. 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS ...

  2. .NET Core采用的全新配置系统[4]: “Options模式”下各种类型的Options对象是如何绑定的?

    旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上.配置绑定的目标类型可以是一个简单的基元类型,也可以是一个自定义数据类型,还可以是一个数组.集合或者字典类 ...

  3. 从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理

    从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表).编辑页面.多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了. 1.如图先创建菜 ...

  4. JMS学习之路(一):整合activeMQ到SpringMVC

    JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到实际的业务需求中的话我们可以 ...

  5. jQuery的DOM操作实例(3)——创建节点&&编写一个弹窗

    一.原生JavaScript编写弹窗 二.jQuery编写弹窗 知识点归纳总结: 在原生JavaScript中,创建一个节点: var oDiv=document.createElement(&quo ...

  6. 2、C#核心编程结构

     本学习主要参考Andrew Troelsen的C#与.NET4高级程序设计,这小节主要述说以下几个东西: Hello World的Main方法: 利用VS2010新建一个控制台应用程序Hello W ...

  7. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  8. 【NLP】大数据之行,始于足下:谈谈语料库知多少

    大数据之行,始于足下:谈谈语料库知多少 作者:白宁超 2016年7月20日13:47:51 摘要:大数据发展的基石就是数据量的指数增加,无论是数据挖掘.文本处理.自然语言处理还是机器模型的构建,大多都 ...

  9. 国内maven镜像,快的飞起

    在oschina关来关去的烦恼下,终于受不了去寻找其他公共库了. 阿里云maven镜像 <mirrors> <mirror> <id>alimaven</id ...

  10. 给jquery-validation插件添加控件的验证回调方法

    jquery-validation.js在前端验证中使用起来非常方便,提供的功能基本上能满足大部分验证需求,例如:1.内置了很多常用的验证方法:2.可以自定义错误显示信息:3.可以自定义错误显示位置: ...