fledgling 发表于 2022-5-26 15:28:55

encoding的位置不同为什么结果会不同?

当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 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编码,因此你往里面输入汉字就会报错,打开文件的时候指定编码就没事了

fledgling 发表于 2022-5-26 15:55:45

当初约定 发表于 2022-5-26 15:41
改成这样:

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

可是我第三行不是指定了获取到的内容解码为utf-8了吗?

当初约定 发表于 2022-5-26 15:58:34

那个只是将页面的内容进行编码,就比如你把水(网页内容)变成了冰(utf-8编码后),但是你的杯子(默认打开的txt文件)保存不了冰,因此你在创造这个杯子的时候给它加一层保温层(用utf-8编码方式创建){:10_256:}这两者虽然都涉及到编码问题,但是是不一样的

qq1151985918 发表于 2022-5-26 16:14:39

代码中
open('《青花瓷》1.txt', 'a+', encoding="utf-8")
对应的是文件的编码,详见图片


res.encoding='utf-8'
对应的是数据的编码

简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
页: [1]
查看完整版本: encoding的位置不同为什么结果会不同?