Sie codieren Ihre Zeichenfolge zweimal, beide sind nicht erforderlich. Der feste Code wie folgt aussieht:
texto = '01REMESSA01COBRAN\N{LATIN CAPITAL LETTER C WITH CEDILLA}A ...'
with open(arquivo, 'w', encoding='ISO-8859-1') as text_file:
text_file.write(texto)
Ich gehe davon aus Sie verwenden Python3 weil Ihre ursprüngliche Zeichenfolge eine wörtliche Ç
darin hat, die nicht in Python2 erlaubt würde. Alle Zeichenfolgen in Python3 sind Unicode, es sei denn, sie haben ein spezielles Präfix (z. B. b'these are octets'
). Im Allgemeinen sollten Sie so lange wie möglich in Unicode bleiben, bis Sie eine Byte-Datei schreiben müssen.
Um die Codierung so spät wie möglich zu verzögern, ermöglicht open
eine encoding=
Option. Ich mag, dass ist die Codierung der Datei so, wenn Sie lesen oder schreiben, es tut nur das Richtige. Dies ermöglicht es uns,
# confirm we read what we meant
print(open(arquivo, encoding='latin-1').read())
hinzuzufügen, was einfach funktioniert. Beachten Sie, 'ISO-8859-1'
und 'latin-1'
sind die gleiche Codierung in Python; ähnlich \N{CAPITAL...}
und 'Ç'
sind auch identisch, ersteres ist nur viel mehr zum Beispiel Zwecke sichtbar.
Ich konsultierte die Python Unicode HOWTO, um sicherzustellen, dass ich mich richtig erinnerte. Ich empfehle Ihnen, es zu lesen. Aus Gründen, die von Nick Coghalans "Processing Text Files in Python 3" erklärt werden, sollten Sie wahrscheinlich cp1252 vergessen.
Woher wissen Sie, dass es sich um "?" Figuren? Sind Sie sicher, dass Sie Ihre Ausgabedatei in 'ISO8859-1' Kodierung betrachten? –
Dies ist die Ausgabe mit encode 'mbcs' '01REMESSA01COBRANÃ? A ......' –