I eine tex-Datei, die von der ersten Quelle unter Verwendung Sphinx erzeugt wurde, wird es als UTF-8 ohne BOM kodiert wird (gemäß Notepad ++) und final_report.tex
genannt, mit folgendem Inhalt:Python line.replace kehrt UnicodeEncodeError
% Generated by Sphinx.
\documentclass[letterpaper,11pt,english]{sphinxmanual}
\usepackage[utf8]{inputenc}
\begin{document}
\chapter{Preface}
Krimson4 is a nice programming language.
Some umlauts äöüßÅö.
That is an “double quotation mark” problem.
Johnny’s apostrophe allows connecting multiple ports.
Components that include data that describe how they ellipsis …
Software interoperability – some dash – is not ok.
\end{document}
Jetzt, bevor ich die Tex-Quelle zu PDF kompiliere, möchte ich einige Zeilen in der Tex-Datei ersetzen, um bessere Ergebnisse zu erhalten. Mein Skript wurde von another SO question inspiriert.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
newFil=os.path.join("build", "latex", "final_report.tex-new")
oldFil=os.path.join("build", "latex", "final_report.tex")
def freplace(old, new):
with open(newFil, "wt", encoding="utf-8") as fout:
with open(oldFil, "rt", encoding="utf-8") as fin:
for line in fin:
print(line)
fout.write(line.replace(old, new))
os.remove(oldFil)
os.rename(newFil, oldFil)
freplace('\documentclass[letterpaper,11pt,english]{sphinxmanual}', '\documentclass[letterpaper, 11pt, english]{book}')
Dies funktioniert auf Ubuntu 16.04 mit Python 2.7 sowie Python 3.5, aber es funktioniert nicht unter Windows mit Python 3.4. Die Fehlermeldung ich erhalte, ist:
wo 201c
steht für linke doppelte Anführungszeichen. Wenn ich das problematische Zeichen entferne, fährt das Skript fort, bis es das nächste problematische Zeichen findet.
Am Ende brauche ich eine Lösung, die auf Linux und Windows mit Python 2.7 und 3.x funktioniert. Ich habe versucht, eine ganze Menge der hier auf SO vorgeschlagenen Lösungen, konnte aber noch nicht gefunden haben, funktioniert für mich ...
Hallo zu bekommen @matth, was Sie tun in Zeile 19 haben? –
Mein Beispiel hat keine 19 Zeilen, ich nehme an, die Fehlermeldung bezieht sich auf Zeile 19 der 'cp850.py' Datei. – matth
verwandt: http://stackoverflow.com/questions/10971033/backporting-python-3-openencoding-utf-8-to-python-2 – matth