鱼C论坛

 找回密码
 立即注册
查看: 1230|回复: 4

[已解决]encoding的位置不同为什么结果会不同?

[复制链接]
发表于 2022-5-26 15:28:55 | 显示全部楼层 |阅读模式

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

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

x
当encoding放在open里时:
import requests
res = requests.get('http://gegeci.com/32/817.html')
nov = res.text
novel = open('《青花瓷》1.txt', 'a+', encoding="utf-8")
novel.write(nov)
novel.close()
但是当直接给网页获取的内容解码时:
import requests
res = requests.get('http://gegeci.com/32/817.html')
res.encoding='utf-8'
novel=res.text
k = open('青花瓷.txt','a+')
k.write(novel)
k.close()
encoding位置不同,第一个代码就能获取到内容,但是第二个代码就会报错
最佳答案
2022-5-26 16:14:39
代码中  
open('《青花瓷》1.txt', 'a+', encoding="utf-8")
对应的是文件的编码,详见图片
01.png
res.encoding='utf-8'
对应的是数据的编码

简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-26 15:41:12 | 显示全部楼层
改成这样:
import requests
res = requests.get('http://gegeci.com/32/817.html')
res.encoding='UTF-8'
novel=res.text
k = open('青花瓷.txt','a+', encoding="utf-8")
k.write(novel)
k.close()
报错原因应该是下面你打开文件的时候它没有默认指定文件为utf-8编码,因此你往里面输入汉字就会报错,打开文件的时候指定编码就没事了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-26 15:55:45 | 显示全部楼层
当初约定 发表于 2022-5-26 15:41
改成这样:

报错原因应该是下面你打开文件的时候它没有默认指定文件为utf-8编码,因此你往里面输入汉字 ...

可是我第三行不是指定了获取到的内容解码为utf-8了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-26 15:58:34 | 显示全部楼层
那个只是将页面的内容进行编码,就比如你把水(网页内容)变成了冰(utf-8编码后),但是你的杯子(默认打开的txt文件)保存不了冰,因此你在创造这个杯子的时候给它加一层保温层(用utf-8编码方式创建)这两者虽然都涉及到编码问题,但是是不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-26 16:14:39 | 显示全部楼层    本楼为最佳答案   
代码中  
open('《青花瓷》1.txt', 'a+', encoding="utf-8")
对应的是文件的编码,详见图片
01.png
res.encoding='utf-8'
对应的是数据的编码

简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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