python2.7如何显示中文字符-Python2.7 在windows命令窗口 输出中文乱码

本文实例讲述了在windows命令窗口下执行Python文件产生乱码的问题, 供大家参考:

Ps: 如有错误还请指正, 欢迎交流学习

# -*- coding:utf-8 -*-

str = "彦雪"

print str

执行后, 输出结果如下:

褰﹂洩

乱码结果和大家可能不同, 不过也都是乱码啦!!

问题分析

Python2 默认编码为 "ascii", ascii编码不包含中文字符

如果在其中有中文字符的话, Python解释器一般会报错.

但如果指定了以UTF-8 编码, Python就不再报错.

"# -- coding:utf-8 --" 是指定Python源码以 UTF-8 编码。

window默认编码为gbk编码,所以str输出前必须编码为gbk。

由于Python中不允许直接将将utf-8 转为gbk, 因此需要先将utf-8 转为unicode 再转为gbk

深度分析

这种方法有一种弊端 就是当我们在跨平台的时候就会出现问题, 因此Python 为我们提供了一个方便的解决方案使用 unicode 作为输出 -- 此方法不适用于raw_input

当需要打印输出时,Python 会首先调取字符输出程序(命令行或者输出函数)的编码格式,然后将该字符串编码成字符输出程序所用的编码(这样字符输出程序就不会因为认不出编码而出现乱码),接着字符输出程序将编码后的字符输出到目的地。

解决方法

# 方法一 中文前加u, 告诉Python解释器后面的是个unicode编码

str = u"彦雪"

# 方法二 str.decode("utf-8") 以utf-8编码对字符串 str 进行解码, 获取unicode

str = "彦雪".decode("utf-8")

# 方法三 unicode(str, "utf-8") 将字符串 str 以utf-8编码解码, 获取unicode

str = unicode("彦雪","utf-8")

在windows命令窗口raw_input 显示乱码

使用raw_input 需要将中文转换为系统编码, 方法如下列所示

# 方法1 str.encode("gbk") 将unicode转为gbk 编码

content = raw_input(u"输入内容: ".encode("gbk"))

# 方法2

content = raw_input("输入内容: ".decode("utf-8").encode("gbk"))

# 方法3

content = raw_input(unicode("输入内容: ","utf-8").encode("gbk"))

虽然这种写法很方便, 但是跨平台效果较差, 个人不推荐这种写法, 建议中文字符和raw_input 分开写. 通过其他手段达到在同一行的目的

扩展阅读

探寻

目前离职, 在等待的过程中, 分享下以前经常遇到的问题和大家探讨, 希望对大家有所帮助, 欢迎指正

在分享知识中寻找自我,享受编程之乐

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值