2017-08-29 1 views
2

J'essaye d'écrire du texte hébreu dans un fichier .txt en utilisant python, mais vu que l'hébreu est non-Ascii et non utf -8 Je reçois des erreurs. J'essaie d'avoir du texte littéral שלום dans le fichier texte par opposition à une représentation de celui-ci.Comment écrire un caractère Unicode dans un fichier qui n'est pas supporté par utf-8, python

hebrew_word = "שלום" 

file = open("file_with_hebrew.txt", "w") 
file.writelines(hebrew_word) 
file.close() 

partie de ma trace de la pile:

UnicodeEncodeError: 'charmap' codec can't encode character '\u05e9' in position 0: character maps to <undefined> 
+0

« L'hébreu est non-UTF-8 »? Err, non. C'est parfaitement bien UTF-8. – deceze

Répondre

2
hebrew_word = "שלום" 

with open('file_with_hebrew.txt', 'w', encoding='utf-8') as file: 
    #         ^^^^^^^^^^^^^^^^ 
    file.writelines(hebrew_word) 

Assurez-vous que vous spécifiez un codage lors de l'ouverture du fichier; dans votre cas, il est par défaut un encodage incapable de représenter l'hébreu.

1

Votre script fonctionne très bien. Vous faites bien et UTF-8 est OK pour imprimer ces caractères. Quelle version de Python utilisez-vous sur quelle plateforme?

De open() doc:

En mode texte, si le codage n'est pas spécifié le codage utilisé dépend plate-forme: locale.getpreferredencoding (Faux) est appelé à obtenir l'encodage des paramètres régionaux en cours.

Vous devez spécifier l'encodage lors d'ouvrir le fichier à écrire dans le cas où votre plate-forme n'a pas UTF-8 par défaut:

hebrew_word = "שלום" 

with open("file_with_hebrew.txt", "w", encoding='UTF-8') as file 
    file.writelines(hebrew_word) 
+0

J'utilise python 3.5.1 @deceze answer fonctionne en déclarant l'encodage au début –

+0

Correct. Jetez un oeil à la doc que j'ai liée dans ma réponse, y est très bien expliqué. BTW, sur quel OS vous exécutez ce script? –

+0

J'utilise Windows –