【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编码:
1 2 3 4 5 6 7 8 9 | # -*- 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编码,所以程序也可以这样:
1 2 3 4 5 6 7 | # -*- 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,代码如下:
1 2 3 4 5 6 7 | # -*- 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格式的方法
分类:
python之路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下