博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决python2.7中UnicodeEncodeError
阅读量:4054 次
发布时间:2019-05-25

本文共 819 字,大约阅读时间需要 2 分钟。

在开始之前让我先放上代码

from bs4 import BeautifulSoupimport urllib2req = urllib2.urlopen("https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=1")ht = req.read()soup1 = BeautifulSoup(ht,'lxml')f = open('t.txt','w')for string2 in soup1.strings:    f.write(string2)f.closed

看起来挺正常的代码,在我执行后就出现了如下问题

Traceback (most recent call last):  File "test.py", line 109, in 
f.write(string2)UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

这里解决方案参考了

好吧,先放上解决方案

import sysreload(sys)sys.setdefaultencoding('utf-8')

由于我之前是ascii编码方式,所以python2.7会自然而然的用ascii的解码方式,而在上述的代码中由于我抓取的是起点中文网(就是有很多中文),所以导致当前的字符流不在ascii范围中,然后就抛出了ordinal not in range(128)的错误。

于是我们要通过修改默认编码方式,对就是用setdefaultencoding(’utf-8’)

最后说一下好像python3.X没有这种问题出现。

个人见解,如有错误请帮忙指出,谢谢

转载地址:http://bwhci.baihongyu.com/

你可能感兴趣的文章
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>