奔跑的赵云 发表于 2020-11-26 19:47:22

关于打开文件的方法有一些不明白

举两个例子:
之前打开文件就需要encoding =utf-8
f = open(file_name,encoding = 'utf-8') 比如这样
但是有的就会报错
f1 = open(file_name1,'r',encoding = 'utf=8') #'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte
正确的应该是:f1 = open(file_name1,'r')

甚么时候需要写encoding = utf-8 什么时候不能写 有点搞晕了??{:10_243:}

Twilight6 发表于 2020-11-26 19:50:22

本帖最后由 Twilight6 于 2020-11-26 19:51 编辑



需要看你 txt 文本编码是什么,open 就设置 encoding 参数是什么编码

编码一致才能正常的解析汉字等字符,否则会导致字节长度不同而无法解码报错

你打开 txt 时候选择另存为,弹出的对话框可以选择保存的编码格式

如果是 ANSI 那么 open 里面可以不用加 encoding = 'GBK' ,因为 open 默认就是 gbk 打开

而选择 utf-8 那么参数就需要加上 encoding = 'utf-8' 大小写都可以

奔跑的赵云 发表于 2020-11-26 19:52:07

Twilight6 发表于 2020-11-26 19:50
需要看你 txt 文本编码是什么,open 就设置 encoding 参数是什么编码

编码一致才能正常的解析汉字等 ...

请问怎么看文本编码??

Twilight6 发表于 2020-11-26 19:54:08

奔跑的赵云 发表于 2020-11-26 19:52
请问怎么看文本编码??



打开文本时候点击另存为时候就可看到编码格式

suchocolate 发表于 2020-11-26 20:08:17

windows有的文本编辑器会自带显示,如notepad++:
python可以使用chardet模块检测:import chardet
with open('test.txt', 'rb') as f:
    cd = chardet.detect(f.read())['encoding']
with open('test.txt', 'r', encoding=cd) as f:
    print(f.read())
页: [1]
查看完整版本: 关于打开文件的方法有一些不明白