ecrire chaine utf8 json à partir d'un dictionnaire - Python - Programmation
Marsh Posté le 05-02-2018 à 09:54:52
bon, si je mets
Code :
|
ca fonctionne.
Sauf que dans mon exemple ca fonctionne, je peux print(j) , mais dans mon code ,j'ai une erreur
|
Je suppose que cela veut dire qu'il y a un caractère non utf8 dedans ? Mais comment savoir lequel
Et évidemment le write dans le fichier derrière échoue également mais bizarrement, pas à la même position :
|
Marsh Posté le 05-02-2018 à 12:20:49
xilebo a écrit : bon, si je mets
ca fonctionne. Sauf que dans mon exemple ca fonctionne, je peux print(j) , mais dans mon code ,j'ai une erreur
Je suppose que cela veut dire qu'il y a un caractère non utf8 dedans ? Mais comment savoir lequel |
Non, ça veut dire que dans ton bricolage le codec "charmap" est sélectionné et ne sait pas encoder U+2026 (HORIZONTAL ELLIPSIS).
1. json a une fonction `dump` qui sort directement dans un fichier (ou pseudo-fichier)
2. `open` en mode texte prend un encodage, donne lui le bon
Code :
|
Marsh Posté le 05-02-2018 à 13:29:13
Merci pour ta réponse
Comment je sélectionne le bon charmap, et surtout à quel endroit ?
J'ai réussi à m'en sortir de la façon suivante :
- j'ai supprimé le caractère indésirable qui correspond au 3 petits points en un seul caractère ( à cause de l'auto completion de Excel ).
- je suis passé en écriture binaire wb + bytes( string, "utf8" ) mais je pense que ca revient au même à ce que tu m'as donné pour le open.
Pour finir, le résultat semble correct, pour autant, quand j'ouvre le fichier .js avec notepad++ , il n'arrive pas à reconnaitre l'encodage , je suis obligé de forcer utf8. Quand j'enregistre le résultat, je vois qu'il a rajouté le BOM au début. Ok. Sauf que si je prends le fichier original de mon prestataire ( fichier json ) , il n'y a pas de BOM, pourtant notepad++ arrive à détecter que le fichier est "utf8 sans BOM" directement.
Marsh Posté le 05-02-2018 à 09:45:09
Bonjour,
je souhaite extraire des données d'un fichier excel ( avec le module xlrd ) pour ensuite générer des fichiers javascript contenant des variables json pouvant contenir des caractères utf8 ( génération de fichier de traduction de langue ). Je me retrouve dans la problématique suivante ne maitrisant absolument pas le python :
je ne sais pas comment faire pour que mon "dumps" que je vais écrire ensuite dans un fichier puisse contenir non pas la traduction ascii des caractères utf8 ( avec le \u ) mais directement le caractère utf8.
Je pense que j'aurai un problème après, le fic.write n'acceptera peut être pas ma string mais ca sera un second sujet
Merci pour votre aide