我尝试使用以下python脚本将所有CSV元素转换为python对象,但CSV文件中并非所有字符都是UTF-8格式,我必须将所有这些字符转换为可读格式,即UTF-8。我如何才能实现这一点?
我试过使用简单的文本编辑器将csv文件转换为UTF-8,就像这个How to convert csv files encoding to utf-8一样,但无能为力。
我使用以下python文件:
import csv
filename = "file.csv"
rows = []
with open(filename, 'r') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
rows.append(row)
print("Total no. of rows: %d"%(csvreader.line_num))
print('\nFirst 5 rows are:\n')
for row in rows[:5]:
for col in row:
print("%10s"%col),
print('\n')
Python会产生以下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa4 in position 4942: invalid start byte
.
1条答案
按热度按时间cyvaqqii1#
UTF-8现在是事实上的标准,因为它可以表示任何Unicode字符,但许多系统(大多数是Windows)仍然使用其他编码,以兼容性为原因。例如,对于西欧语言,Windows使用cp 1252,这是一个Latin 1变体。
Latin 1是一个有趣的编码,因为Latin 1中的任何字节都是有效的,并且表示相同码位的unicode字符。因此,当您想要进行防弹解码并且不确定实际的编码时,它是使用的编码。如果编码不同,例如,这个utf-8编码字符串“fête”(法语中fest的意思)将
'fête'
读作Latin 1编码的字节串。因此,这不会中断(但可能会给予不正确的字符):