UnicodeEncodeError
, с которым вы сталкиваетесь, возникает при записи данных в выходной файл CSV.
Как говорится в сообщении об ошибке, Python использует кодек charmap, который не поддерживает символы, содержащиеся в ваших данных.
Это обычно происходит, когда вы open
файл без указания параметра кодирования на компьютере Windows.
В прикрепленном кодовом документе (ссылка на комментарий) фрагмент №. 10, мы можем видеть, что это так.
Вы написали:
with open('wongnai.csv', 'w', newline='') as record:
fieldnames = ...
В этом случае Python использует зависящую от платформы кодировку по умолчанию, которая обычно представляет собой 8-битную кодировку на машинах Windows.
Укажите кодек, который поддерживает все Unicode, и запись файла должна завершиться успешно:
with open('wongnai.csv', 'w', newline='', encoding='utf16') as record:
fieldnames = ...
Вы также можете использовать «utf8» или «utf32» вместо «utf16», конечно.
UTF-8 очень популярен для сохранения файлов в средах Unix и в Интернете, но если вы планируете открыть файл CSV в Excel позже, вы можете столкнуться с некоторыми проблемами, чтобы приложение правильно отображало данные.
Более защищенным от Windows (но технически нестандартным) решением является использование «utf-8-sig», который добавляет в начало файла некоторый полумагический символ, чтобы помочь программам Windows понять, что это UTF-8.