在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编码:

  1. # -*- coding:utf-8 -*-
  2.  
  3. concent = "请输入内容:"
  4. #将字符串由utf-8解码为unicode
  5. c_unicode = concent.decode("utf-8")
  6. #将解码后的字符串编码为gbk
  7. c_gbk = c_unicode.encode("gbk")
  8. st=raw_input(c_gbk)
  9. print st

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

  1. # -*- coding:utf-8 -*-
  2.  
  3. concent = "请输入内容:"
  4. #将字符串由utf-8解码为unicode
  5. c_unicode = concent.decode("utf-8")
  6. st=raw_input(c_unicode)
  7. print st

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

  1. # -*- coding:utf-8 -*-
  2.  
  3. concent = "请输入内容:"
  4. #将字符串由utf-8解码为gbk
  5. c_gbk = concent.decode("gbk")
  6. st=raw_input(gbk)
  7. 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. Android总结之Gzip/Zip压缩

    前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方 ...

  2. Node.js:fs文件系统模块

    fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...

  3. 设计模式(八): 从“小弟”中来类比"外观模式"(Facade Pattern)

    在此先容我拿“小弟”这个词来扯一下淡.什么是小弟呢,所谓小弟就是可以帮你做一些琐碎的事情,在此我们就拿“小弟”来类比“外观模式”.在上面一篇博文我们完整的介绍了“适配器模式”,接下来我们将要在这篇博客 ...

  4. 数据结构:二叉查找树(C语言实现)

    数据结构:二叉查找树(C语言实现) ►写在前面 关于二叉树的基础知识,请看我的一篇博客:二叉树的链式存储 说明: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 1.若其左子树不空,则左子树上 ...

  5. docker对数据卷容器进行备份

    转载请注明出处 官网的数据以及各大博客都没有对这个的具体说明,本人也是理解了好久. 我们使用docker的过程中,使用共享的数据卷是经常的,那么.我们要怎么进行备份呢?   首先,我们得了解下面4个命 ...

  6. ASP.NET Core 中文文档 第二章 指南(4.3)添加 View

    原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将 ...

  7. 基于NodeJS的秘室聊天室

    借着放假期间将NodeJS重新回顾了一下并玩了一下sketch来进行设计界面,很不错.(注:代码整理后会放到github上,请关注.) 本次聊天室我给它定义了一个名称叫“秘密聊天室”. 需求: 技术选 ...

  8. 在web浏览器上显示室内温度(nodeJs+arduino+socket.io)

    上次的nodejs操作arduino入门篇中实现了如何连接arduino.这次我们来实现通过arduino测量室内温度并在浏览器上显示出来. [所需材料] 硬件:LM35温度传感器,arduino u ...

  9. Angularjs环境搭建

    Angularjs架构搭建      1.搭建Angularjs项目           1)在package.json中配置如下,然后 npm install下载包     {   "na ...

  10. [转]在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效

    该文原网址:http://www.cnblogs.com/xwgli/p/5487930.html 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效.   当访问 h ...