Python读写CSV文件时遭遇UnicodeEncodeError编码错误
解决CSV写入时的UnicodeEncodeError问题
你的报错是因为输出文件没有指定UTF-8编码,Windows系统下默认用cp1252编码,而这个编码无法处理像č这类特殊Unicode字符。
修改后的代码
with open(output_file, 'w', encoding='utf-8', newline='') as f_output, open(input_file, encoding='utf-8-sig') as f_input: reader = csv.DictReader(f_input, delimiter='\t') fieldnames = reader.fieldnames writer = csv.DictWriter(f_output, fieldnames=fieldnames) writer.writeheader() for row in reader: print(row) writer.writerow(row)
关键修改点
- 打开输出文件时添加
encoding='utf-8':强制使用UTF-8编码写入,确保所有特殊字符都能正确保存 - 加上
newline='':这是Python csv模块的官方推荐写法,能避免不同操作系统下的换行符混乱问题
错误原因说明
你读取文件时指定了utf-8-sig编码,能正确解析带BOM的UTF-8文件,但写入时没指定编码,系统自动用了Windows默认的cp1252编码,而该编码不包含\u010d(对应字符č)这类扩展Unicode字符,所以触发了UnicodeEncodeError。
内容的提问来源于stack exchange,提问作者pbh
相关产品推荐
相关产品推荐

