美文网首页
python2中的编码问题

python2中的编码问题

作者: 掀开绿罗裙 | 来源:发表于2017-04-11 21:24 被阅读0次

最近爬js渲染网页,提取json格式内容的时候。忽然发现写入本地时内容全是带‘u'的字符串码,print输出依然是带u的串码,encode(“utf-8”),则会报UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-16: ordinal not in range(128)错误

网上看相关的blog,发下大家都是

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

这样强制将系统默认编码格式转换成utf-8确实能解决print的问题。

但是,写入文件还是不行。

再有,在百度知道上看到有人修改python安装目录下lib文件夹下的site.py,我觉得这样更加得不偿失。

于是疯狂在网上搜索找答案,终于在stackoverflow上看到相似的问题。回答者说,出现这个问题的主要原因是python解释器默认是asiic编码,如果要在print上输出,则需解码成unicode。还建议提问者去看howto unicode官方文档。

于是我上车看howto unicode。

文档是这样说的:

原来,解释器默认编码都是asiic,如果使用print输出特殊编码的字符,则需要先将编码解码成unicode,这样解释器print的时候会自动将编码转换成合适的编码格式。

如果要写入文件,那要先解码unicode,在编码成UTF-8

如:

>>>a="\u8d1f\u8d23\u4eba"

>>>a

>>>'\\u8d1f\\u8d23\\u4eba'

>>>print a

>>>\u8d1f\u8d23\u4eba

>>>>>> a=a.decode("unicode-escape")#反编码成unicode码

>>> a

u'\u8d1f\u8d23\u4eba'

>>> print a

负责人

print 输出的时候会自动解码

但是当我们要写入文件的时候呢

>>> fname="test.txt"

>>> f=open(fname,'w')

>>> f.write(a)

Traceback (most recent call last):  File "", line 1, inf.write(a)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128

这时就需要先转码了

>>> f.write(a.encode("utf-8"))

查看文件写入的内容:

相关文章

  • python2中的编码问题

    最近爬js渲染网页,提取json格式内容的时候。忽然发现写入本地时内容全是带‘u'的字符串码,print输出依然是...

  • python 编码问题总结记录

    Python2的默认编码ASCII,这是python编码问题的根本原因,可以想象,python3的编码问题肯定没有...

  • 一篇文章助你理解Python3中字符串编码问题

    前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的...

  • Python2和Python3的区别

    编码方式 编码 python2的默认编码是ascii,所以会导致经常会遇到编码问题文件中经常会写# coding=...

  • Python2和python3的区别

    1.python2的中文编码问题 python2是用ASCII码作为默认编码,因此在项目代码中如果出现中文是会报错...

  • 学习资料

    简明python教程Python2字符编码问题小结stackoverflow about python

  • python的unicode、str、byte的关系

    作为一个用惯了python3的人,在python2如此操蛋的编码问题中,不得不整理一下python2中字符串和字节...

  • Python2编码问题

    Python2 源码编码 python2源码默认使用ascii进行编码,当源码中出现中文字符等非ascii编码的字...

  • Python2 编码问题

    一些定义 字符(character)字符是文字的最小的组成单位,其为一种抽象定义(不要与 java 或 c 中的 ...

  • python2编码问题

    由于工作的需要,用了很久的python3又转回来用Python2,所以编码问题又摆在了面前。先看一下python2...

网友评论

      本文标题:python2中的编码问题

      本文链接:https://www.haomeiwen.com/subject/hcmuattx.html