不知道文件的编码方式,如何将文件解码和转码
不知道某文件的编码格式(文件名为cz2-1.log),使用记事本和UltraEdit时打开都是乱码,如:
那么encoding关键字中应该输入什么样的解码方式才能将其解码?
尝试使用‘utf-8’、'gbk'、‘gb18030'解码,分别会报错误:
'utf-8' codec can't decode byte 0xd4 in position 88: invalid continuation byte
'gbk' codec can't decode byte 0x80 in position 425: illegal multibyte sequence
'gb18030' codec can't decode byte 0x80 in position 425: illegal multibyte sequence
使用二进制解码:open('cz2-1.log', 'rb'),倒是没有报错,但准备将读出来的二进制字节码以文本文件的形式写入到一个新的文件时,会报错:
'utf-8' codec can't decode byte 0xd4 in position 88: invalid continuation byte
看来还是在解码的时候没有得到正确解码啊
在网上搜索了一些,说可从上述窗口的右下角知道该文件的编码方式为ANSI,但在python解释器中使用
f = open('cz2-1.log', 'r', encoding='ANSI')解码时会报错误:
'mbcs' codec can't decode byte 0x81 in position 516: No mapping for the Unicode character exists in the target code page.
已经蒙圈了。。
是否有一种方式可以知道该文件的编码方式并且用python正确解码呢?
正在回答 回答被采纳积分+1
同学你好:
同学可以使用当前文档将其另存为其他的编码格式。
2
import chardet import codecs #修改文件格式 def convert(filename,out_enc='utf-8'): content = codecs.open(filename,'rb').read() source_encoding = chardet.detect(content)['encoding'] print(source_encoding) if source_encoding != out_enc: content = content.decode(source_encoding).encode(out_enc) codecs.open(filename,'wb').write(content)
需要用到python的chardet模块,这个模块可以解析出文件的编码,然后就可以对文件解码,之后就以指定的编码进行编码,在写进入,这样就完成了文件编码格式的改变。
注意:在这读写的时候都是字节形式的。
如果我解决了同学的问题,请采纳!学习愉快^_^。
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星