zoukankan      html  css  js  c++  java
  • 【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代码页 

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

      选项默认代码页,选择936

      cmd 无法输入中文,显示中文乱码 最终解决方案
      cmd 无法输入中文,显示中文乱码 最终解决方案
    2.  在cmd中输入:

      chcp 936

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

      cmd 无法输入中文,显示中文乱码 最终解决方案
    3.  新建文本,复制粘贴以下代码,把文件类型改成reg :Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8

      之后双击运行。点是。

      cmd 无法输入中文,显示中文乱码 最终解决方案
      cmd 无法输入中文,显示中文乱码 最终解决方案
    4.  运行regedit,打开注册表。

      HKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe中找到CodePage

      双击打开CodePage,输入3a8

      cmd 无法输入中文,显示中文乱码 最终解决方案
      cmd 无法输入中文,显示中文乱码 最终解决方案
  • 相关阅读:
    考研最路径dijkstra和floyd
    考研最小生成树
    考研之图的遍历
    kmp--考研写法
    求1-n之内的素数
    一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,
    有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
    一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数
    猴子吃桃问题。
    求一个3×3矩阵对角线元素之和。
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/6242275.html
Copyright © 2011-2022 走看看