gpt4 book ai didi

python - 统一码编码错误 : 'gbk' codec can't encode character: illegal multibyte sequence

转载 作者:行者123 更新时间:2023-11-28 19:36:13 26 4
gpt4 key购买 nike

我想从 url 中获取 html 内容,并用正则表达式解析 html 内容。但是 html 内容有一些多字节字符。所以我遇到了标题中描述的错误。

谁能告诉我如何解决这个问题?

最佳答案

您需要编辑您的问题以显示 (1) 您使用的代码 (2) 完整的错误和回溯 (3) 涉及的 url (4) 什么是 unicode 字符您正在尝试将 编码 为 gbk

您似乎以某种方式从 html 内容中的原始字节中获取了 unicode 字符——怎么做到的? html内容中指定了什么编码?

然后(我猜)您正在尝试将 unicode 字符写入文件,将 unicode 编码为 gbk。在此过程中,您遇到如下错误:

>>> u'\uffff'.encode('gbk')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'gbk' codec can't encode character u'\uffff' in position 0: illegal multibyte sequence
>>>

如果 html 内容中的原始字节没有用 gbk 编码,那么很可能你有一些不能用 gbk 表示的 unicode 字符。在这种情况下,您可能希望使用原始编码对结果进行编码,或者将它们编码为可以采用任何 unicode 字符的 gb18030。

另一种可能性是您以某种方式破坏了原始字节或 unicode。我当然希望您的正则表达式操作是在 unicode 上完成的,而不是在 gb2312、gbk 等可变长度字符编码上完成的。

更新:

这是您的代码片段:

import sys, urllib.request
url = "http://www.meilishuo.com"
wp = urllib.request.urlopen(url)
content = wp.read()
str_content = content.decode('utf-8')
fp = open("web.txt","w")
fp.write(str_content)
fp.close()

据此我不得不推断:
(1) 你正在运行 Python 3.x
(2) sys.defaultencoding == "gbk"-- 否则您不会收到您之前报告的部分错误消息。

由于我的 sys.defaultencoding 不是“gbk”,我用 gbk_content = str_content.encode('gbk') 替换了你的最后 3 行,并使用 Python 3.1.2 运行修改后的代码段。

观察:

(1)网站有charset=utf-8,用utf-8解码OK
(2) 错误信息:UnicodeEncodeError: 'gbk' codec can't encode character '\u2764' in position 35070: illegal multibyte sequence

\u2664 是一个装饰符号(重黑心)。该网站是动态的;在另一次尝试中,第一个违规字符是\xa9(COPYRIGHT SIGN)。

因此该网页包含未在 gbk 中映射的 Unicode 字符。选项是

(1) 使用 'gbk' 编码但使用 'replace' 选项
(2) 使用 'gbk' 编码但使用 'ignore' 选项
(3) 使用支持所有 Unicode 字符(utf-8、gb18030)的编码进行编码,并且您有一个显示机制可以呈现所有不在 gbk 中的字符

关于python - 统一码编码错误 : 'gbk' codec can't encode character: illegal multibyte sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com