У вас здесь много проблем.
Во-первых, вы застряли символы Юникода в литерал str
вместо литерала unicode
. Это почти всегда плохая идея.
Во-вторых, вы позвонили encode
по телефону str
. Но encode
предназначен для преобразования unicode
в str
. * Для этого Python должен сначала decode
вашего str
до unicode
, чтобы он мог позвонить encode
. И если вы вынудите Python к decode
для вас, не сообщив ему, какой кодек использовать, он будет использовать sys.getdefaultencoding()
, что почти никогда не будет тем, что вы хотите. (В частности, это не будет UTF-8 просто потому, что ваш кодирования источника.)
Вы можете исправить эти первые две проблемы, просто добавив одну букву:
s = u"Ñ ÑÑÑаÑ! Ð½ÐµÑ Ñил"
Но это все-таки не собирается работать. Зачем? Потому что вы просите его кодировать не-ASCII-символы в набор символов ASCII. Это невозможно. Поэтому он будет вызывать обработчик ошибок. Поскольку вы не указали обработчик ошибок, вы получаете значение по умолчанию, которое называется strict
. Как следует из названия, strict
вызывает исключение, когда вы просите его сделать что-то невозможное.
Другие обработчики ошибок - см. Документы str.encode
для получения полного списка. Я не уверен, какой результат вы ожидали, но вы можете получить обратный слэш-текст или текст со всеми не-ASCII-символами, замененными на ?
или несколькими другими возможностями. Например:
e = s.encode('ascii', 'replace')
Конечно, если вы на самом деле не хотите ASCII, а UTF-8, то все очень просто: просто скажите Python вы хотите UTF-8 вместо ASCII:
e = s.encode('utf-8')
* Есть несколько специальных кодеков, как hex
и gzip
, которые преобразовывают str
str
к, unicode
к unicode
или str
к unicode
, но ascii
не является одним из них.
Какой выходной сигнал вы _expect_ здесь? – abarnert
мой вывод я устаю! нет сил или любого другого иностранного языка, но и содержание содержит символы и прочее. im разбор кодов из XML-файла в Интернете. Когда я использую заголовок utf-8 в php, он отлично работает, но когда я переделал свою программу в python, это был абсолютный ад. То, что я дал вам в первом поле, - это то, что бросает мне XML-парсер.Надеюсь, я дал вам лучшее представление о том, что происходит/что мне нужно сделать. спасибо :) –
Почему вы пытаетесь закодировать эту кириллицу на ASCII (которая поддерживает только текст на английском языке)? Что вы ожидали от этого? Если вы не хотите ASCII, почему вы просите об этом? – abarnert