萌新提问: UnicodeEncodeError 错误,可以正常显示字符但写入文件失败

2018-05-29 17:15:17 +08:00
 2736

我在用 python 下载某个网页里的资料,获取的某一个 str 里面有些字符能正常 print 但是无法写入文件里,报错。 UnicodeEncodeError: 'gbk' codec can't encode character '\xf6' in position 308: illegal multibyte sequence 不知道应该如何解决? 写代码检查这个错误时,代码是这样的:
c = open('a2','w')
print('\xf6')
c.write('\xf6')
c.close()
源文件局部是这样的:
import urllib.request
from bs4 import BeautifulSoup
c = open('c1','w')
d = urllib.request.urlopen('http://www.efloras.org/florataxon.aspx?flora_id=3&taxon_id=200012756')
e = BeautifulSoup(d.read().decode(encoding="utf-8"),"lxml")
c.write(e.find(attrs={'id': 'lblTaxonDesc'}).get_text())
if e.find(attrs={'title': 'Illustration'}):
c.write(str(e.find(attrs={'title': 'Illustration'})))
c.close()

代码里的倒数第二行的 Tab 打不出来。

1808 次点击
所在节点    Python
5 条回复
awli
2018-05-29 17:38:25 +08:00
看了你的代码我有种蛋蛋疼的感觉 ignore 可以不?
zynlp
2018-05-29 17:56:06 +08:00
open 里加个 encoding=“ utf8 ”,或者直接 error=“ ignore ”
你这估计是 windows 下默认 gbk 打开文件,‘\xf6 ’不在 gbk 编码表里,写不进去的
zwzmzd
2018-05-29 18:17:53 +08:00
运行前设置一下这个环境变量
PYTHONIOENCODING=UTF-8
2736
2018-05-29 18:43:18 +08:00
我不是程序员啊,写代码只是为了临时解决某个问题的,这些代码只要调试完没问题,收集完数据了就不再使用了。
我之前想过可以用 ignore,但不知道往哪里插。
2736
2018-05-29 18:44:26 +08:00
open 里加上 encoding=“ utf8 ”解决了问题,非常感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX