Python obtenir le code de caractère dans le codage différent?
Donné un code de caractère en tant que nombre entier en un seul encodage, comment pouvez-vous obtenir le code de caractère, disons, utf-8 et de plus, en tant qu'entier?
OriginalL'auteur | 2011-12-22
Vous devez vous connecter pour publier un commentaire.
UTF-8 est une variable-length encoding, donc je vais supposer que vous voulait vraiment dire "point de code Unicode". Utilisation
chr()
pour convertir le code du caractère d'un personnage, de le décoder, et l'utilisationord()
pour obtenir le point de code.chr() arg not in range(256)
pour "shift_jisx0213'En Python 2,
chr
prend en charge uniquement des caractères ASCII, donc uniquement des chiffres dans le[0..255]
gamme. Utilisationunichr
au lieu de support de l'Unicode.Hmm
UnicodeEncodeError: 'ascii' codec can't encode character u'\u8140' in position 0 : ordinal not in range(128)
euh... bonjour? Des idées?
chr(145)
est probablement équivalent àunichr(145).encode('latin1')
sur Python 2 si l'entrée est enrange(256)
. Il n'y a pas deunichr
sur Python 3, il est renommé pourchr
. Il est généralement un hack pour fixer l'entrée si vous avez besoin de:reinterpreted = unistr.encode(one_encoding).decode(another_encoding)
OriginalL'auteur Ignacio Vazquez-Abrams
Vous ne pouvez mapper un "nombre entier" à partir d'un encodage à un autre s'ils sont à la fois octet encodages.
Voici un exemple d'utilisation de "iso-8859-15" et "cp1252" (aka "ANSI"):
Noter que
ord
est ici utilisée pour obtenir le nombre ordinal de la codé octet. À l'aide deord
sur l'original de la chaîne unicode donnerait son point de code unicode:L'opération inverse à
ord
peut être réalisée à l'aide dechr
(pour les codes dans la gamme0
à127
) ouunichr
(pour les codes dans la gamme0
àsys.maxunicode
):Pour multi-octets codage, un simple "nombre entier" la cartographie est généralement pas possible.
Voici le même exemple que ci-dessus, mais en utilisant "iso-8859-15" et "utf-8":
La "utf-8" encodage utilise trois octets pour coder le même caractère, donc un one-to-one mapping n'est pas possible. Ceci dit, beaucoup de jeux de caractères (y compris les "utf-8") sont conçus pour être compatible ASCII, donc une cartographie est généralement possible pour les codes dans la plage de 0 à 127 (mais seulement de façon triviale, car le code sera toujours le même).
OriginalL'auteur ekhumoro
Voici un exemple de comment le coder/décoder les œuvres de danse:
Espère que cela aide 🙂
Si vous avez besoin pour construire l'unicode directement à partir d'un entier, d'utilisation unichr:
OriginalL'auteur Raymond Hettinger