我正在以encoding UTF-16
模式打开文本文件:
with open(file.txt, 'r', encoding="UTF-16") as infile:
然后我想写一个excel文件:
from csv import writer
excelFile = open("excelFile_1.csv", 'w', newline='')
write = writer(excelFile, delimiter=',')
write.writerows([[input]])
其中input
是文本文件file.txt
我收到以下错误
UnicodeEncodeError: 'charmap' codec can't encode character '\xe9' in position 113: character maps to <undefined>
使用Python 3.2
答案 0 :(得分:3)
您还需要为CSV文件选择输出编码:
excelFile = open("excelFile_1.csv", 'w', newline='', encoding='UTF16')
系统的默认编解码器无法处理您从输入文件名中读取的代码点。
在Excel 中打开此文件可能不起作用;请按照this answer中的步骤选择UTF16编解码器,以确保Excel正确读取文件。
您也可以尝试使用UTF-8,将UTF-8 BOM添加到文件的开头:
excelFile = open("excelFile_1.csv", 'w', newline='', encoding='UTF8')
excelFile.write('\ufeff') # Zero-width non-breaking space, the Byte Order Mark
主要是Microsoft软件使用UTF-8文件中的BOM,因为UTF-8只有一个字节顺序可供选择,与UTF-16和UTF-32不同,但它显然让Excel开心(呃)。