如果文件编码未知,如何在Python中尝试多种编码解码?
时间: 2024-09-21 22:01:47 浏览: 52
解决Python中pandas读取*.csv文件出现编码问题
如果文件的编码未知,你可以使用Python的`codecs`模块中的`detect()`函数结合循环,尝试一系列常用的编码来解码文本。这个过程可能会有点慢,因为会逐一测试。以下是一个示例:
```python
from codecs import detect
def guess_encoding(file_content):
# 创建一个常用编码列表
encodings_to_test = ['utf-8', 'ascii', 'big5', 'iso-8859-1', 'windows-1252'] # 更多编码可以根据需求添加
for encoding in encodings_to_test:
try:
decoded_content = file_content.decode(encoding)
if decoded_content.isprintable(): # 检查解码后的内容是否包含打印字符,减少误判
return encoding
except UnicodeDecodeError:
pass
raise ValueError('Unable to determine the encoding. Please specify manually.')
# 使用示例
with open('unknown_encoded_file.txt', 'rb') as file:
raw_data = file.read()
guessed_encoding = guess_encoding(raw_data)
with open('decoded_file.txt', 'w', encoding=guessed_encoding) as out_file:
out_file.write(decoded_content)
阅读全文