【python之路2】CMD中执行python程序中文显示乱码
在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代码页
右击cmd窗口,点默认值。
在选项中默认代码页,选择936。


- 在cmd中输入:
chcp 936
注:chcp命令用于显示或设置活动代码页编号。

- 新建文本,复制粘贴以下代码,把文件类型改成reg :Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8
之后双击运行。点是。


- 运行regedit,打开注册表。
在HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe中找到CodePage。
双击打开CodePage,输入3a8


【python之路2】CMD中执行python程序中文显示乱码的更多相关文章
- 如何在cmd中执行python文件
打开cmd终端 输入python 然后再输入要执行文件的路径 就可以把python文件运行起来 ...
- 命令行模式(CMD)下mysql查询中文显示乱码问题
mysql的默认编码已经设置为utf-8,用其他工具(代码,mysql workbench)写入或读出时显示正常,但用cmd查询时显示为乱码. 2.原因:mysql的客户端根本无法以utf-8的形式返 ...
- Python之路 - Socket实现远程执行命令
Python之路 - Socket实现远程执行命令 os模块实现
- 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 ...
- 记一次解决cmd中执行java提示"找不到或无法加载主类"的问题
今天遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”.现将该问题的原因以及解决办法记录一下. 先理解一下系统变量path和clas ...
- cmd中执行jar文件命令(待参数)
cmd中执行jar文件命令(待参数) 1,jar文件路径:F:\products 2,cmd命令: --两个日期参数(空格隔开) java -jar F:\products\analysis.jar ...
- 记录自己在 cmd 中执行 jar 文件遇到的一些错误
记录自己在 cmd 中执行 jar 文件遇到的一些错误 场景: 请求接口,解析接口返回的 JSON 字符串并插入到我们的数据库里面. 情况: 项目在 eclipse 中正常运行,打成 jar 包后在 ...
- cmd中执行mvn help:system报错的解决办法
[ERROR] No plugin found for prefix 'help' in the current project and in the plugin groups [org.apach ...
- python matplotlib 中文显示乱码设置
python matplotlib 中文显示乱码设置 原因:是matplotlib库中没有中文字体.1 解决方案:1.进入C:\Anaconda64\Lib\site-packages\matplot ...
随机推荐
- 更改默认alert框体
更改框体主要用到的是更改系统的内置控件winpop下面是winpop具体代码 (function(window, jQuery, undefined) { 2 3 var HTMLS = { 4 ov ...
- springboot(九):定时任务
在我们的项目开发过程中,经常需要定时任务来帮助我们来做一些内容,springboot默认已经帮我们实行了,只需要添加相应的注解就可以实现 1.pom包配置 pom包里面只需要引入springboot ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- ASP.NET Core 中文文档 第三章 原理(10)依赖注入
原文:Dependency Injection 作者:Steve Smith 翻译:刘浩杨 校对:许登洋(Seay).高嵩 ASP.NET Core 的底层设计支持和使用依赖注入.ASP.NET Co ...
- Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用)
Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用) 1.1. Keyword1 1.2. 前言1 2. Java项目使用.Net的aspx页面view1 ...
- Sublime Text通过插件编译Sass为CSS及中文编译异常解决
虽然PostCSS才是未来,但是Sass成熟稳定,拥有一大波忠实的使用者,及开源项目,且最近Bootstrap 4 alpha也从Less转到Sass了.所以了解Sass还是非常有必要的. 基于快速开 ...
- JQuery效果-淡入淡出、滑动、动画
一.JQuery Fading方法 JQuery 有四种fade方法 1.fadeIn() 淡入 对应也有$(selector).fadeIn(speed, ...
- HTML学习(二)进阶篇
在博客园中有许多大神对HTML超文本标记语言写了很多内容,总结了很多知识,这里对我看到的博客文章, 所学到的知识,做一个总结. 一)列表和表格 dl→definition list(定义列表),见备 ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- linux jexus 服务 设置开机启动
linux的服务开机设置一般在 /etc/init.d/里 而jexus的默认安装目录在 /usr/jexus里 启动文件为 jws 参数 有start stop restart 这里贡献一个刚写好的 ...