最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python输出到文件乱码如何解决

    正文概述    2020-05-15   332

    python输出到文件乱码如何解决

    python代码文件的编码

    py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character。需要在代码文件的第一行或第二行添加编码指示:

    1 # coding=utf-8 ##以utf-8编码储存中文字符

    2 print '中文'

    像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果用unicode编码,有以下三种方式:

    1 s1 = u'中文' #u表示用unicode编码方式储存信息

    2 s2 = unicode('中文','gbk')

    unicode是一个内置函数,第二个参数指示源字符串的编码格式。

    decode是任何字符串具有的方法,将字符串转换成unicode格式,参数指示源字符串的编码格式。

    encode也是任何字符串具有的方法,将字符串转换成参数指定的格式。

    (2)、字符串的编码

    用 u'汉字' 构造出来的是unicode类型,不用的话构造出来是str类型

    str的编码是与系统环境相关的,一般就是sys.getfilesystemencoding()得到的值

    所以从unicode转str,要用encode方法

    从str转unicode,所以要用decode

    例如:

    # coding=utf-8 #默认编码格式为utf-8

    s = u'中文' #unicode编码的文字

    print s.encode('utf-8') #转换成utf-8格式输出

    但当python中间处理非ASCII编码时,经常会出现如下错误:

    UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)

    0x??是超出128的数字,python在默认的情况下认为语言的编码是ascii编码,所以无法处理其他编码,需要设置python的默认编码为所需要的编码。

    一个解决的方案是在代码中添加:

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8') (其中utf-8为你想输出的字符编码)

    解释:

    sys.setdefaultencoding方法在python导入site.py后就删除了(具体代码查看site.py就可以看到)因此如果想用的话可以再重新load进入

    总结:

    u=u'unicode编码文字'

    g=u.encode('gbk') #转换为gbk格式

    print g #此时为乱码,因为当前环境为utf-8,gbk编码文字为乱码

    str=g.decode('gbk').encode('utf-8') #以gbk编码格式读取g(因为他就是gbk编码的,需要事先知道它是GBK编码)并转换为utf-8格式输出

    print str #正常显示中文(同文件输出)

    安全的方法:

    s.decode('gbk','ignore').encode('utf-8′) #以gbk编码读取(当然是读取gbk编码格式的文字了)并忽略错误的编码,转换成utf-8编码输出。

    推荐学习《Python教程》!


    下载网 » python输出到文件乱码如何解决

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元