[PYTHON] UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xa4 en position 0: ordinal pas dans la plage (128)

Conclusion

Code de caractère Code de caractère "A" len('Ah')
unicode \u3042 1
euc-jp \xa4\xa2 2
utf-8 \xe3\x81\x82 3
conversion code Valeur de retour
euc-jp → unicode unicode('\xa4\xa2','euc-jp') u'\u3042'
euc-jp → unicode '\xa4\xa2'.decode('euc-jp') u'\u3042'
utf-8 → unicode unicode('\xe3\x81\x82','utf-8') u'\u3042'
utf-8 → unicode '\xe3\x81\x82'.decode('utf-8') u'\u3042'
unicode → euc-jp u'\u3042'.encode('euc-jp') '\xa4\xa2'
unicode → utf-8 u'\u3042'.encode('utf-8') '\xe3\x81\x82'
utf-8 → unicode → euc-jp unicode('\xe3\x81\x82','utf-8').encode('euc-jp') '\xa4\xa2'
utf-8 → unicode → euc-jp '\xe3\x81\x82'.decode('utf-8').encode('euc-jp') '\xa4\xa2'
euc-jp → unicode → utf-8 unicode('\xa4\xa2','euc-jp').encode('utf-8') '\xe3\x81\x82'
euc-jp → unicode → utf-8 '\xa4\xa2'.decode('euc-jp').encode('utf-8') '\xe3\x81\x82'

Unicode

Au moment d'Unicode


>>> string=u'Ah'
>>> string
u'\u3042'

EUC-JP -> Unicode

EUC-Au moment de JP


>>> string='Ah'
>>> string
'\xa4\xa2'
>>> len(string)
2

Faux


>>> unicode(string)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa4 in position 0: ordinal not in range(128)

Positif


>>> unicode(string,'euc-jp')
u'\u3042'

UTF -> Unicode

UTF-À 8


>>> string='Ah'
>>> string
'\xe3\x81\x82'
>>> len(string)
3

Faux


>>> unicode(string)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

Positif


>>> unicode(string,'utf-8')
u'\u3042'

Fonction et méthode de conversion de code de caractère

Type de conversion Fonction ou méthode
Chaîne de caractères non-unicode → chaîne de caractères unicode unicode([Chaîne non-unicode], [Code de caractère], [errors='strict'])
Chaîne de caractères non-unicode → chaîne de caractères unicode Chaîne non-unicode.decode([Code de caractère], [errors='strict'])
chaîne de caractères unicode → chaîne de caractères non-unicode chaîne unicode.encode([Code de caractère], [errors='strict'])

errors

unicode encode decode errors Contenu
strict Lancer UnicodeDecodeError
replace U+FFFD,Ajout de «CARACTÈRE DE REMPLACEMENT»
ignore Supprimer des caractères de la chaîne Unicode résultante
× × xmlcharrefreplace Utiliser des références de caractères XML

Recommended Posts

UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xa4 en position 0: ordinal pas dans la plage (128)
yum lance l'erreur "UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xc3 en position 15: ordinal pas dans la plage (128)"
Lorsque le codec ne peut pas décoder l'octet apparaît en python
Mecab --UnicodeDecodeError: le codec 'utf8' ne peut pas décoder l'octet
UnicodeDecodeError: le codec 'utf-8' ne peut pas décoder l'octet 0x91 en position 1: octet de départ invalide
SyntaxError: (erreur unicode) le codec 'unicodeescape' ne peut pas décoder les octets en position 2-3: échappement \ UXXXXXXXX tronqué
UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xa4 en position 0: ordinal pas dans la plage (128)
yum lance l'erreur "UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xc3 en position 15: ordinal pas dans la plage (128)"
Lorsque le codec ne peut pas décoder l'octet apparaît en python
Erreur python d'aujourd'hui: UnicodeEncodeError: le codec 'ascii' ne peut pas encoder les caractères
Erreur python d'aujourd'hui: UnicodeEncodeError: le codec 'utf-8' ne peut pas encoder les caractères
J'étais accro au déploiement de GoogleCloudFunctions (le codec 'ascii' ne peut pas encoder le caractère u '\ u281b' en position 58 apparaît)
Le codec 'shift_jis' ne peut pas encoder le caractère '\ uff0d' en position 0: résolution d'une séquence multi-octets illégale