2014-03-03 9 views
5

Ich bin auf Linux und möchte String (in UTF-8) in TXT-Datei schreiben. Das ist mein Code:Python - schreibe nicht-ASCII-Zeichen in Datei

# -*- coding: UTF-8-*- 

import os 
import sys 


def __init__(self, dirname, speaker, file, exportFile): 

     text_file = open(exportFile, "a") 

     text_file.write(speaker.encode("utf-8")) 
     text_file.write(file.encode("utf-8")) 

     text_file.close()  

Wenn ich unter Windows bin, funktioniert es. Aber unter Linux erhalte ich diesen Fehler:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position in position 36: ordinal not in range(128) 

Wie kann ich dieses Problem lösen? Vielen Dank.

+1

Sind Sie sicher, dass Sie nicht wollen, zu 'decode ('UTF-8')' Ihre UTF8-String in Bytestring konvertieren? – mgilson

+0

Haben Sie ein Beispiel oder einen Link zu Ihrer Quelle? – alvas

+0

Haben Sie versucht, die Datei im "au" Modus zu öffnen? –

Antwort

7

Sie könnten versuchen, die "Codecs" Modul zu verwenden:

import codecs 

with codecs.open('filename', 'w', encoding='utf-8') as out: 
    out.write(u'some text') 
+1

Ich habe es versucht, aber ich habe den gleichen Fehler. – user3375111

+0

Mit Python 2 könnte es helfen, "u strings" zu verwenden – dugres

+0

Das funktioniert wirklich gut für meine Python3, danke! –

Verwandte Themen