鱼C论坛

 找回密码
 立即注册
查看: 1751|回复: 7

[已解决]关于python中编码问题

[复制链接]
发表于 2023-6-20 10:40:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import requests

r = requests.get('ht(和谐)tps://ssr1.scrape.center/static/img/logo.png',verify=False)
print(r.text)


抛出的错误报告:
UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd' in position 0: illegal multibyte sequence

请问大牛们如何解决这个问题呢?在线等待。
最佳答案
2023-6-20 15:24:51
python小小白哟 发表于 2023-6-20 15:17
出现了这个错误报告:
UnicodeEncodeError: 'gbk' codec can't encode character '%ufffd' in position 0 ...

才发现你请求的是一个图片,图片不同于文本,它是一个二进制文件,是不遵循文本编码的,所以自然不能以 .text 查看

你可以把它保存成一个图片再打开
import os
import requests

r = requests.get('https://ssr1.scrape.center/static/img/logo.png',verify=False)
with open('logo.png', 'wb') as f:
    f.write(r.content)

os.startfile('logo.png')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-20 12:18:15 | 显示全部楼层
import requests

r = requests.get('https://ssr1.scrape.center/static/img/logo.png',verify=False)
r.encoding = 'utf-8'
print(r.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 15:17:57 | 显示全部楼层

出现了这个错误报告:
UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd' in position 0: illegal multibyte sequence
不知道怎么回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 15:24:51 | 显示全部楼层    本楼为最佳答案   
python小小白哟 发表于 2023-6-20 15:17
出现了这个错误报告:
UnicodeEncodeError: 'gbk' codec can't encode character '%ufffd' in position 0 ...

才发现你请求的是一个图片,图片不同于文本,它是一个二进制文件,是不遵循文本编码的,所以自然不能以 .text 查看

你可以把它保存成一个图片再打开
import os
import requests

r = requests.get('https://ssr1.scrape.center/static/img/logo.png',verify=False)
with open('logo.png', 'wb') as f:
    f.write(r.content)

os.startfile('logo.png')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 15:30:30 | 显示全部楼层
isdkz 发表于 2023-6-20 15:24
才发现你请求的是一个图片,图片不同于文本,它是一个二进制文件,是不遵循文本编码的,所以自然不能以 . ...

你好 但是我看到的书上写的代码示例是可以打开的二进制图片的。以text类型打开的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 15:33:31 | 显示全部楼层
python小小白哟 发表于 2023-6-20 15:30
你好 但是我看到的书上写的代码示例是可以打开的二进制图片的。以text类型打开的。


不会吧,你是不是搞错了,你拍个照片上传到这里发给我看看:wenshushu.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 15:42:29 | 显示全部楼层
isdkz 发表于 2023-6-20 15:33
不会吧,你是不是搞错了,你拍个照片上传到这里发给我看看:wenshushu.com

打开的是一堆乱码。以text打开的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 15:46:14 | 显示全部楼层
python小小白哟 发表于 2023-6-20 15:42
打开的是一堆乱码。以text打开的。

[b]直接用 .text 应该是不行的,如果你要忽略编码错误可以看下面的方法

在 Python 的  requests  库中,有时会遇到解码文本内容时的编码问题。如果你希望忽略这些错误,你可以尝试用以下方法:
import requests

response = requests.get('http://example.com')

# 使用 errors 参数设置为 'ignore' 来忽略解码错误
text = response.content.decode('utf-8', errors='ignore')

这段代码会尝试以 utf-8 编码来解码响应的内容。如果遇到任何错误,它将忽略这些错误,并继续处理文本。但需要注意的是,这可能会导致某些字符丢失或替换为其他字符。

如果你知道具体的文本编码,你也可以替换 'utf-8' 为你所知道的编码。例如,如果你知道文本是以 'gbk' 编码的,你可以这样写:
text = response.content.decode('gbk', errors='ignore')

如果你不确定正确的编码,你可以尝试使用 chardet 库自动检测编码:
import requests
import chardet

response = requests.get('http://example.com')

encoding = chardet.detect(response.content)['encoding']
text = response.content.decode(encoding, errors='ignore')

这段代码会使用 chardet.detect() 方法来推断响应内容的编码,然后用推断出的编码来解码文本。
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表