Как преобразовать строку в utf-8 в Python
У меня есть браузер, который отправляет символы utf-8 на мой сервер Python, но когда я извлекаю его из строки запроса, кодировка, возвращаемая Python, является ASCII. Как преобразовать обычную строку в utf-8?
ПРИМЕЧАНИЕ. Строка, переданная из Интернета, уже закодирована в кодировке UTF-8, я просто хочу, чтобы Python рассматривал ее как UTF-8, а не ASCII.
- UnicodeDecodeError: кодек ascii не может декодировать байт 0xe7 в позиции 0: порядковый номер не в диапазоне (128)
- кодировать и декодировать строку байтов python
- Операция печати python с utf-8 и nohup
- UnicodeDecodeError: кодек «utf-8» не может декодировать ошибку байта
- BeautifulSoup "(" utf-8 ")
- Как искать и заменять специальные символы utf-8 в Python?
- UnicodeDecodeError: кодек ascii не может декодировать байт 0xd1 в позиции 2: порядковый номер не в диапазоне (128)
- используя pyodbc на linux для вставки символов unicode или utf-8 в поле nvarchar mssql
- Преобразование октетов UTF-8 в юникодные коды
- Проверьте правильность строки utf8 в Python
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')
- Учебное пособие по русскому языку
- cx_freeze конвертирует GUI-приложение (tkinter) после нажатия кнопки plot