Как сделать Unicode строку с Python3 - PullRequest
87 голосов
/ 25 июля 2011

Я использовал это:

u = unicode(text, 'utf-8')

Но получаю ошибку с Python 3 (или ... может быть, я просто что-то забыл включить):

NameError: global name 'unicode' is not defined

Спасибо.

Ответы [ 5 ]

117 голосов
/ 25 июля 2011

Литеральные строки по умолчанию являются юникодом в Python3.

Предполагая, что text является bytes объектом, просто используйте text.decode('utf-8')

unicode Python2 эквивалентно str в Python3, поэтому вы также можете написать:

str(text, 'utf-8')

, если хотите.

8 голосов
/ 06 июля 2016

В качестве обходного пути я использовал это:

# Fix Python 2.x.
try:
    UNICODE_EXISTS = bool(type(unicode))
except NameError:
    unicode = lambda s: str(s)
8 голосов
/ 25 июля 2011

Что нового в Python 3.0 говорит:

Весь текст в Unicode;однако закодированный Unicode представляется в виде двоичных данных

Если вы хотите убедиться, что вы выводите utf-8, вот пример с этой страницы Unicode в 3.0 :

b'\x80abc'.decode("utf-8", "strict")
0 голосов
/ 15 июля 2019

самый простой способ в python 3.x

text = "hi , I'm text"
text.encode('utf-8')
0 голосов
/ 28 марта 2019

В программе Python 2, которую я использовал в течение многих лет, была такая строка:

ocd[i].namn=unicode(a[:b], 'utf-8')

Это не сработало в Python 3.

Однако программа работалас:

ocd[i].namn=a[:b]

Я не помню, почему я поставил юникод туда, но я думаю, что это потому, что имя может содержать шведские буквы åäöÅÄÖ.Но даже они работают без «юникода».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...