鱼C论坛

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

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

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

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

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

x
当encoding放在open里时:
  1. import requests
  2. res = requests.get('http://gegeci.com/32/817.html')
  3. nov = res.text
  4. novel = open('《青花瓷》1.txt', 'a+', encoding="utf-8")
  5. novel.write(nov)
  6. novel.close()
复制代码

但是当直接给网页获取的内容解码时:
  1. import requests
  2. res = requests.get('http://gegeci.com/32/817.html')
  3. res.encoding='utf-8'
  4. novel=res.text
  5. k = open('青花瓷.txt','a+')
  6. k.write(novel)
  7. k.close()
复制代码

encoding位置不同,第一个代码就能获取到内容,但是第二个代码就会报错
最佳答案
2022-5-26 16:14:39
代码中  
  1. open('《青花瓷》1.txt', 'a+', encoding="utf-8")
复制代码

对应的是文件的编码,详见图片
01.png

  1. res.encoding='utf-8'
复制代码

对应的是数据的编码

简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-5-26 15:41:12 | 显示全部楼层
改成这样:
  1. import requests
  2. res = requests.get('http://gegeci.com/32/817.html')
  3. res.encoding='UTF-8'
  4. novel=res.text
  5. k = open('青花瓷.txt','a+', encoding="utf-8")
  6. k.write(novel)
  7. k.close()
复制代码

报错原因应该是下面你打开文件的时候它没有默认指定文件为utf-8编码,因此你往里面输入汉字就会报错,打开文件的时候指定编码就没事了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

可是我第三行不是指定了获取到的内容解码为utf-8了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2022-5-26 16:14:39 | 显示全部楼层    本楼为最佳答案   
代码中  
  1. open('《青花瓷》1.txt', 'a+', encoding="utf-8")
复制代码

对应的是文件的编码,详见图片
01.png

  1. res.encoding='utf-8'
复制代码

对应的是数据的编码

简而言之,你可以理解为,容器和内容的关系或者说纸张和文字的关系
都是红色,第一个就是白纸和红纸的关系
第二个就是白字和红字的关系
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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