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位置不同,第一个代码就能获取到内容,但是第二个代码就会报错 改成这样:
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编码,因此你往里面输入汉字就会报错,打开文件的时候指定编码就没事了 当初约定 发表于 2022-5-26 15:41
改成这样:
报错原因应该是下面你打开文件的时候它没有默认指定文件为utf-8编码,因此你往里面输入汉字 ...
可是我第三行不是指定了获取到的内容解码为utf-8了吗? 那个只是将页面的内容进行编码,就比如你把水(网页内容)变成了冰(utf-8编码后),但是你的杯子(默认打开的txt文件)保存不了冰,因此你在创造这个杯子的时候给它加一层保温层(用utf-8编码方式创建){:10_256:}这两者虽然都涉及到编码问题,但是是不一样的 代码中
open('《青花瓷》1.txt', 'a+', encoding="utf-8")
对应的是文件的编码,详见图片
而
res.encoding='utf-8'
对应的是数据的编码
简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
页:
[1]