鱼C论坛

 找回密码
 立即注册
查看: 4500|回复: 17

open()函数中的参数encoding有什么作用

[复制链接]
发表于 2020-6-30 15:43:52 | 显示全部楼层
正如2、3楼所言。
我仅做一种补充:“编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。”
“解码是一种用特定方法,把数码还原成它所代表的内容或将电脉冲信号、光信号、无线电波等转换成它所代表的信息、数据等的过程。”
“Encoding意思是编码,是将信息分类的结果用一种易于被计算机和人识别的符号体系表示出来的过程,是人们统一认识、统一观点、相互交换信息的一种技术手段。编码的直接产物是代码。”

通常来说,encoding 这个参数是不用去设置的,因为现在大多数的文件的编码格式就是它默认的 gbk。
如果有需要设置的编码格式,用默认项的话,几乎就会是乱码,而编码格式并没有直观的体现。在 chardet 库里面有能查询的函数,但不是肯定的,有一定概率会出错。

上方引号的内容来自百度百科。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-1 21:02:58 | 显示全部楼层
本帖最后由 阴阳神万物主 于 2020-7-1 21:11 编辑
void_island 发表于 2020-7-1 20:50
由于 with open('url_%d.txt'%num,'w') as file:
中没填写参数encoding = encoding,会报错:
Traceb ...


就是因为编码格式不对,所以才会报错!
因为这个网页的html代码不是 gbk 的编码格式!
它们的html代码的编码格式是 utf-8 与 gbk 不同!
所以才需要对 open 函数的 encoding 参数进行设置!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-1 21:28:54 | 显示全部楼层
void_island 发表于 2020-7-1 21:20
可是,response已经解码成字符串了,而且文件也是用文本的模式打开的,为什么写入文本时还会出现编码错误 ...

写入文件的过程,其实就是编码的过程,将字符串的内容按照编码规则,翻译成另外的东西。
当出现编码规则以外的东西,就无法进行编码了,于是就导致写入失败,在写入开始后又还没写完的阶段中断。
相当于要将一些你无法理解的词说给你听,要你写出来,你是个人会学习,会进步。但是编码规则它不会改变,于是乎,出现不能转换的词就需要更换编码规则。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-2 08:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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