Как преобразовать строку Unicode (содержащую дополнительные символы, такие как £ $ и т. Д.) В строку Python?
python
string
unicode
type-conversion
williamtroup
источник
источник
print type(unicode_string), repr(unicode_string)
Python 3.x:print type(unicode_string), ascii(unicode_string)
Затем отредактируйте свой вопрос и скопируйте / вставьте результаты вышеприведенного оператора печати. НЕ перепечатывать результаты. Также посмотрите вверху вашего HTML-кода и посмотрите, можете ли вы найти что-то вроде этого: <meta http-equ = "Content-Type" content = "text / html; charset = iso-8859unicode_string = u"I'm unicode string"; bytestring = unicode_string.encode('utf-8'); unicode_again = bytestring.decode('utf-8')
Ответы:
Видеть
unicodedata.normalize
источник
unicode
строку в astr
- это удалить или преобразовать символы, которые не могут быть представлены в ASCII. Так что +1 от меня.type(title) == unicode and type(title.encode('utf-8')) == str
, Нет необходимости повреждать ввод, чтобы получить строку байтов, которую можно сохранить в файл.Вы можете использовать кодирование в ASCII, если вам не нужно переводить не-ASCII символы:
источник
ignore
противreplace
a.encode('ascii', 'xmlcharrefreplace')
дает'aaaàçççñññ'
.type(a)
находитсяstr
в Python 3.6.8 и не имеет никакогоencode()
метода.Если строка содержит только символы ascii.
источник
Если у вас есть строка Unicode, и вы хотите записать ее в файл или другую сериализованную форму, вы должны сначала закодировать ее в определенное представление, которое можно сохранить. Существует несколько распространенных кодировок Unicode, таких как UTF-16 (для большинства символов Unicode используется два байта) или UTF-8 (1-4 байта / кодовая точка в зависимости от символа) и т. Д. Чтобы преобразовать эту строку в определенную кодировку, необходимо выполнить следующие действия. можешь использовать:
Эта необработанная строка байтов может быть записана в файл. Однако обратите внимание, что при чтении его обратно вы должны знать, в какой кодировке он находится, и декодировать его, используя ту же кодировку.
При записи в файлы вы можете избавиться от этого процесса кодирования / декодирования, используя модуль кодеков . Итак, чтобы открыть файл, который кодирует все строки Unicode в UTF-8 , используйте:
Обратите внимание, что все, кто использует эти файлы, должно понимать, в какой кодировке находится файл, если они хотят их прочитать. Если вы только читаете / пишете, это не проблема, в противном случае убедитесь, что вы пишете в форме, понятной для всех, кто использует файлы.
В Python 3 эта форма доступа к файлам используется по умолчанию, а встроенная
open
функция принимает параметр кодирования и всегда переводит в / из строк Unicode (строковый объект по умолчанию в Python 3) для файлов, открытых в текстовом режиме.источник
Вот пример:
источник
utf8
как показано здесь, результатом являются только вопросительные знаки? Вот изображение моего Python, версия 2.7.13. (Я могу кодировать другие объекты Unicode, такие какu"Klüft"
, но не евро?)Что ж, если вы готовы / готовы перейти на Python 3 (что может не произойти из-за обратной несовместимости с некоторым кодом Python 2), вам не нужно делать никаких преобразований; Весь текст в Python 3 представлен строками Unicode, что также означает, что
u'<text>'
синтаксис больше не используется . У вас также есть, по сути, строки байтов, которые используются для представления данных (которые могут быть закодированной строкой).http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
(Конечно, если вы в настоящее время используете Python 3, проблема, скорее всего, связана с тем, как вы пытаетесь сохранить текст в файл.)
источник
Вот пример кода
источник
файл содержит строку в юникоде
для меня
источник
result.encode().decode('unicode-escape')
Никакой ответ не работал для моего случая, где у меня была строковая переменная, содержащая символы Юникода, и никакой кодировки-декодирования, объясненные здесь, не помогли.
Если я делаю в терминале
или
Вывод правильный:
Но работа со скриптами, загружающими эту строковую переменную, не работала.
Вот что сработало в моем случае , на случай , если кто-нибудь поможет:
источник