2017-09-13 2 views
2

Ich habe convert() eine Funktion schreiben, die eine pdf in HTML verwandelt sich und gibt die HTML als String zurück. Wenn ich tun:Kann nicht in Datei schreiben, aber auf Text

print(convert()) 

Es funktioniert, aber wenn ich versuche, das Ergebnis zu schreiben in Datei:

f.write(convert()) 

ich:

UnicodeEncodeError: 'charmap' codec can't encode character '\ufb01' in position 978: character maps to <undefined> 

In pycharm mein Projekt Encoder gesetzt auf UTF-8, und ich habe eine

# -*- encoding: utf-8 -*- 

Zu Beginn der Datei. Irgendwelche Ideen, warum ich diesen Fehler bekomme?

+0

Versuchen Sie mit 'f.write (convert(). Encode ('utf-8'))' – Hackerman

Antwort

2

Die Python-Version macht einen Unterschied. Hier ist Python 3.6:

Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print('\ufb01') 
fi 
>>> with open('out.txt','w') as f: 
... f.write('\ufb01') 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "D:\dev\Python36\lib\encodings\cp1252.py", line 19, in encode 
    return codecs.charmap_encode(input,self.errors,encoding_table)[0] 
UnicodeEncodeError: 'charmap' codec can't encode character '\ufb01' in position 0: character maps to <undefined> 

Der Grund ist in diesem Fall Python 3.6 unter Windows auf die Konsole mit Unicode-APIs schreibt, so ist es gut funktioniert. Das Öffnen einer Datei mit der Standardcodierung verwendet die Codepage 1252 auf meinem System, die das geschriebene Unicode-Zeichen nicht unterstützt. Verwenden Sie eine Codierung, die alle Unicode-Zeichen unterstützt:

>>> with open('out.txt','w',encoding='utf8') as f: 
... f.write('\ufb01') 
... 
1 
Verwandte Themen