资讯专栏INFORMATION COLUMN

Windows 命令行下解决python utf-8中文输出的终极解决方案

h9911 / 516人阅读

摘要:代码参考了这里上文对各种系统无法输出奇葩编码的字符做了总结,本文中只针对下编码但想执行编码的文件进行修改。这样就实现了下和下兼容了当然如果不知道原来是什么编码,但想转成编码的话,将上面的条件删掉即可。

代码参考了这里:http://wiki.python.org/moin/P...

上文对各种系统无法输出奇葩编码的字符做了总结,本文中只针对windows cmd下GBK编码(cp936)但想执行utf-8编码的Python文件进行修改。

原理就是:

Another is to put an intercept between sys.stdout, and the text wrapper.

更多还是看参考文章吧,这里直接贴代码:

[python] view plain copy

-- coding: utf-8 --

import sys

class UnicodeStreamFilter:

def __init__(self, target):  
    self.target = target  
    self.encoding = "utf-8"  
    self.errors = "replace"  
    self.encode_to = self.target.encoding  
def write(self, s):  
    if type(s) == str:  
        s = s.decode("utf-8")  
    s = s.encode(self.encode_to, self.errors).decode(self.encode_to)  
    self.target.write(s)  
      

if sys.stdout.encoding == "cp936":

sys.stdout = UnicodeStreamFilter(sys.stdout)  

if name == "__main__":

a = "你好"  
b = u"你好"  
print a  
print b  

保存成一个py文件,直接import即可。

这样就实现了linux下和windows下兼容了~

当然如果不知道原来是什么编码,但想转成utf-8编码的话,将上面的if条件删掉即可。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38090.html

相关文章

  • Python2.x 字符编码终极指南

    摘要:值得注意的是,有的编码方案不一定能表示某些信息,这时编码就会失败,比如就不能用来表示中文。数组的每一项是一个字节,用来表示。所以对于字符串来说,其长度等于编码后字节的长度。所以,让来编码解码中文,就超出了其能力范围。 在人机交互之字符编码 一文中对字符编码进行了详细的讨论,并通过一些简单的小程序验证了我们对于字符编码的认识。但仅了解这篇文章的内容,并不能帮我们在日常编程中躲过一些字符编...

    Amio 评论0 收藏0
  • 关于解决Python乱码问题终极解决方案 (TL;DR)

    摘要:关于解决乱码问题的终极解决方案有个特别好玩的现象,当我们为了编码头疼的时候,几乎搜索到所有的文章都会先发一通牢骚。另外,关于的乱码问题,又是一个新的较长篇章。 关于解决Python乱码问题的终极解决方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有个特别好玩的现象...

    Lemon_95 评论0 收藏0
  • Python中文编码问题

    摘要:使用中文替代中文中文编码中文编码中有以上两种声明字符串变量的方式,它们的主要区别是编码格式的不同,其中,的编码格式和文件声明的编码格式一致,而的编码格式则是。 字符串是Python中最常用的数据类型,而且很多时候你会用到一些不属于标准ASCII字符集的字符,这时候代码就很可能抛出UnicodeDecodeError: ascii codec cant decode byte 0xc4 ...

    Cheriselalala 评论0 收藏0
  • 磨刀霍霍:我李汉三又回来写代码啦~

    摘要:常量中,通常用大写的变量名表示常量。含有中文的无法用编码,因为中文编码的范围超过了编码的范围,会报错。个中文字符经过编码后通常会占用个字节,而个英文字符只占用个字节。 写在前面的话不知不觉毕业已经三年多了,现在的工作中,极少涉及代码的工作。主要接触的项目是BI的建设,做的更多的类似产品经理的工作,或者比较初级的数据分析的工作。因为没有美工和测试小伙伴,所以还额外承包了这两项工作的我,偶...

    buildupchao 评论0 收藏0

发表评论

0条评论

h9911

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<