Bonjour à toutes et à tous
J’ai un problème avec le décodage de caractères encodés en UTF-8 dans un JSON.
J’ai l’impression que certains caractères de l’extension A d’UNICODE ne passent pas.
J’utilise Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
Voici mon code :
import json
with open('graphics.txt') as mon_fichier:
data = json.load(mon_fichier)
print(data)
Et voici mon fichier "graphics.txt" :
{"character":"㐬","strokes":["1 2 3"]}
dump :
7B 22 63 68 61 72 61 63 74 65 72 22 3A 22 E3 90
AC 22 2C 22 73 74 72 6F 6B 65 73 22 3A 5B 22 31
20 32 20 33 22 5D 7D 0D 0A
On voit, à la fin de la première ligne et au début de la deuxième ligne du dump, E3 90 AC.
C’est le caractère 㐬, U+342C encodé en UTF-8 qui pose problème à Python.
(voir : https://www.compart.com/en/unicode/U+342C)
L’exécution, cela donne :
Traceback (most recent call last):
File "D:\essai-graphics.py", line 4, in <module> data = json.load(mon_fichier)
File "C:\Users\toto\AppData\Local\Programs\Python\Python310\lib\json__init__.py", line 293, in load return loads(fp.read(),
File "C:\Users\toto\AppData\Local\Programs\Python\Python310\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can’t decode byte 0x90 in position 15: character maps to <undefined>