Как сделать строку unicode с python3
Я использовал это:
u = unicode(text, 'utf-8')
Но ошибка с Python 3 (или... может быть, я просто забыл что-то включить):
NameError: global name 'unicode' is not defined
Спасибо.
Ответы
Ответ 1
По умолчанию в Python3 буквенные строки в кодировке Unicode.
Если предположить, что text
является bytes
объекта, просто используйте text.decode('utf-8')
unicode
из Python2 эквивалентен str
в Python3, поэтому вы также можете написать:
str(text, 'utf-8')
Если вы предпочитаете.
Ответ 2
Что нового в Python 3.0 говорит:
Весь текст Unicode; однако кодированный Unicode представлен как двоичный Данные
Если вы хотите, чтобы вы выводили utf-8, вот пример с этой страницы на unicode в 3.0:
b'\x80abc'.decode("utf-8", "strict")
Ответ 3
В качестве обходного пути я использовал это:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
Ответ 4
В программе Python 2, которую я использовал много лет, была такая строка:
ocd[i].namn=unicode(a[:b], 'utf-8')
Это не сработало в Python 3.
Однако программа оказалась работающей с:
ocd[i].namn=a[:b]
Я не помню, почему я поставил юникод там, во-первых, но я думаю, что это потому, что имя может содержать шведские буквы åäöÅÄÖ. Но даже они работают без "юникода".
Ответ 5
самый простой способ в Python 3.x
text = "hi , I'm text"
text.encode('utf-8')
Ответ 6
Вот как я решил свою проблему для преобразования символов типа \uFE0F,\u000A и т.д. А также смайликов, которые закодированы с 16 байтами.
example = 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\\uD83D\\uDE0D\\uD83D\\uDE0D\\u2764\\uFE0F Present Moment Caf\\u00E8 in St.Augustine\\u2764\\uFE0F\\u2764\\uFE0F '
import codecs
new_str = codecs.unicode_escape_decode(example)[0]
print(new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\ud83d\ude0d\ud83d\ude0d❤️ Present Moment Cafè in St.Augustine❤️❤️ '
new_new_str = new_str.encode('utf-16', 'surrogatepass').decode('utf-16')
print(new_new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream😍😍❤️ Present Moment Cafè in St.Augustine❤️❤️ '