Как преобразовать строку в utf-8 в Python

У меня есть браузер, который отправляет символы utf-8 на мой сервер Python, но когда я извлекаю его из строки запроса, кодировка, возвращаемая Python, является ASCII. Как преобразовать обычную строку в utf-8?

ПРИМЕЧАНИЕ. Строка, переданная из Интернета, уже закодирована в кодировке UTF-8, я просто хочу, чтобы Python рассматривал ее как UTF-8, а не ASCII.

7 Solutions collect form web for “Как преобразовать строку в utf-8 в Python”

>>> plain_string = "Hi!" >>> unicode_string = u"Hi!" >>> type(plain_string), type(unicode_string) (<type 'str'>, <type 'unicode'>) 

^ Это различие между строкой байта (plain_string) и строкой unicode.

 >>> s = "Hello!" >>> u = unicode(s, "utf-8") 

^ Преобразование в юникод и определение кодировки.

Если вышеприведенные методы не работают, вы также можете сказать Python игнорировать части строки, которые она не может преобразовать в utf-8:

 stringnamehere.decode('utf-8', 'ignore') 

Может быть немного перебор, но когда я работаю с ascii и unicode в одних и тех же файлах, повторение декодирования может быть больно, вот что я использую:

 def make_unicode(input): if type(input) != unicode: input = input.decode('utf-8') return input else: return input 

Добавьте следующую строку в верхнюю часть вашего .py-файла:

 # -*- coding: utf-8 -*- 

позволяет вам кодировать строки непосредственно в вашем скрипте, например:

 utfstr = "ボールト" 

Если вы правильно поняли, у вас в коде есть закодированная байтовая строка utf-8.

Преобразование байтовой строки в строку юникода называется расшифровкой (кодировка unicode -> byte-string).

Вы делаете это, используя функцию unicode или метод декодирования . Или:

 unicodestr = unicode(bytestr, encoding) unicodestr = unicode(bytestr, "utf-8") 

Или:

 unicodestr = bytestr.decode(encoding) unicodestr = bytestr.decode("utf-8") 

В Python 3.6 у них нет встроенной функции unicode (). Чтобы преобразовать строку в unicode, просто введите значение символа Юникода и сделайте следующее:

 my_str = "\u221a25" my_str = u"{}".format(my_str) print(my_str) >>> √25 
 city = 'Ribeir\xc3\xa3o Preto' print city.decode('cp1252').encode('utf-8') 
  • Python os.walk Сделать его поддержкой Unicode / UTF-8?
  • Werkzeug повышает BrokenFilesystemWarning
  • Запись в файл UTF-8 в Python
  • Как декодировать строку, представляющую utf-8 с помощью python?
  • «TypeError: строковый аргумент без кодировки», но строка закодирована?
  • как показать китайское слово, а не юникодное слово
  • Русские символы в re (Python)
  • UnicodeDecodeError в отладчике PyCharm
  • Строка UTF-8 как ключ в словаре вызывает KeyError
  • UTF-8 HTML и CSS-файлы с спецификацией (и как удалить спецификацию с Python)
  • как читать файл, который может быть сохранен как ansi или unicode в python?
  • Python - лучший язык программирования в мире.