J'ai utilisé ceci:
u = unicode(text, 'utf-8')
Mais obtenir une erreur avec Python 3 (ou ... j'ai peut-être oublié d'inclure quelque chose):
NameError: global name 'unicode' is not defined
Je vous remercie.
Les chaînes littérales sont unicode par défaut en Python3.
En supposant que text
soit un objet bytes
, utilisez simplement text.decode('utf-8')
unicode
de Python2 est équivalent à str
en Python3, vous pouvez donc écrire aussi:
str(text, 'utf-8')
si tu préfères.
Pour contourner le problème, j'ai utilisé ceci:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
Tout le texte est Unicode; toutefois, Unicode codé est représenté sous forme de données binaires
Si vous voulez vous assurer de sortir utf-8, voici un exemple de cette page sur nicode dans la version 3. :
b'\x80abc'.decode("utf-8", "strict")
la manière la plus simple python 3.x
text = "hi , I'm text"
text.encode('utf-8')
Dans un programme Python 2 que j'ai utilisé pendant de nombreuses années, il y avait cette ligne:
ocd[i].namn=unicode(a[:b], 'utf-8')
Cela ne fonctionnait pas dans Python 3.
Cependant, le programme s'est avéré fonctionner avec:
ocd[i].namn=a[:b]
Je ne me souviens pas pourquoi j’ai mis l’unicode là-bas, mais je pense que c’est parce que son nom peut contenir des lettres suédoises åäöÅÄÖ. Mais même ils fonctionnent sans "unicode".
C’est ainsi que j’ai résolu mon problème en convertissant des caractères tels que\uFFE0,\u000A, etc. Et aussi des emojis codés avec 16 octets.
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❤️❤️ '