Эта ошибка возникает, когда вы передаете строку Unicode, содержащую неанглийские символы (символы Unicode за 128), к чему-то, ожидающему строку ASCII.Кодировка по умолчанию для строки байтов Python - ASCII, «которая обрабатывает ровно 128 (английских) символов».Вот почему попытка преобразовать символы Unicode за 128 приводит к ошибке.
Конструктор unicode ()
unicode(string[, encoding, errors])
имеет подпись unicode (строка [, кодирование, ошибки]).Все его аргументы должны быть 8-битными строками.
Первый аргумент преобразуется в Unicode с использованием указанной кодировки; если вы не укажете аргумент кодирования, для преобразования будет использоваться кодировка ASCII , поэтому символы больше 127 будут обрабатываться как ошибки
, например
s = u'La Pe\xf1a'
print s.encode('latin-1')
или
write(s.encode('latin-1'))
будет кодироваться с использованием латинского-1