UnicodeEncodeError: 'ascii' кодек
write
пытается кодировать строку, используя кодек ascii (у которого нет способа кодирования символов с ударением, таких как é или à.
Вместо этого используйте
import codecs
with codecs.open("/tmp/test.txt",'w',encoding='utf-8') as f:
f.write(all.decode('utf-8'))
или выберите другой кодек (например, cp1252), который может кодировать символы в вашей строке.
PS. all.decode('utf-8')
был использован выше, потому что f.write
ожидает Unicode-строку. Лучше, чем использовать all.decode('utf-8')
, будет конвертировать все ваши строки в ранний Unicode, работать в юникоде и кодировать в определенную кодировку, например, 'utf-8' позднее, - только тогда, когда это необходимо. *
ПФС. Похоже, что names
может быть уже списком строк Unicode. В этом случае определите delimiter
как строку в юникоде: delimiter = u';'
, так что all
будет строкой в юникоде. Тогда
with codecs.open("/tmp/test.txt",'w',encoding='utf-8') as f:
f.write(all)
должно работать (если нет каких-либо проблем с Python 2.4, о которых я не знаю.)
Если 'utf-8' не работает, не забудьте попробовать другие кодировки, которые содержат символы, которые вам нужны, и о которых ваш компьютер знает. В Windows это может означать «cp1252».