Eu usei este:
u = unicode(text, 'utf-8')
Mas recebendo um erro com Python 3 (ou ... talvez eu apenas tenha esquecido de incluir algo):
NameError: global name 'unicode' is not defined
Obrigado.
python
unicode
python-3.x
cnd
fonte
fonte
Respostas:
Strings literais são unicode por padrão no Python3.
Supondo que
text
seja umbytes
objeto, basta usartext.decode('utf-8')
unicode
de Python2 é equivalente astr
em Python3, então você também pode escrever:se você preferir.
fonte
str
é unicode, ou seja, é "decodificado", então não faz sentido chamádecode
-lostr(text, 'utf-8')
, o texto deve ser um binário de string. por exemplostr(b'this is a binary', 'utf-8')
O que há de novo no Python 3.0 diz:
Se você quiser garantir que está gerando utf-8, aqui está um exemplo desta página em Unicode em 3.0 :
fonte
Como solução alternativa, tenho usado isto:
fonte
try: unicode = str; except: pass
.unicode = str
já que não vai falhar em 2 ou 3from six import u as unicode
que eu prefiro simplesmente porque é maisunicode = str
Foi assim que resolvi meu problema de converter chars como \ uFE0F, \ u000A, etc. E também emojis que codificavam com 16 bytes.
fonte
Em um programa Python 2 que usei por muitos anos, havia esta linha:
Isso não funcionou no Python 3.
No entanto, o programa acabou funcionando com:
Não me lembro por que coloquei unicode lá em primeiro lugar, mas acho que foi porque o nome pode conter as letras suecas åäöÅÄÖ. Mas mesmo eles funcionam sem "unicode".
fonte
a maneira mais fácil em python 3.x
fonte