Hallo, ich beschaeftige mich neuerdings ein wenig mit Docutils und re- structuredText. Soweit alles schoen und gut, nur ist eine Menge Information darueber ueberall verstreut, wie mir scheint. Daher eine Frage an die, die es vielleicht besonders betrifft. Wie bringe ich Docutils dazu, die Codierung einer Textdatei zu be- ruecksichtigen, wenn es daraus z.B. HTML macht, damit Umlaute aus Latin-1 richtig (ü...) codiert werden? Danke, Dinu -- Dinu C. Gherman ...................................................................... "I think we agree, the past is over." (George W. Bush, 10 May 2000) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Dinu Gherman <gherman@darwin.in-berlin.de> writes:
Wie bringe ich Docutils dazu, die Codierung einer Textdatei zu be- ruecksichtigen, wenn es daraus z.B. HTML macht, damit Umlaute aus Latin-1 richtig (ü...) codiert werden?
Man muss das "setting" "input_encoding" festlegen. Offenbar gibt es da mehrere Möglichkeiten, u.a. Kommandozeilen-Optionen. frontend.py kennt '--input-encoding', kurz '-i'. Ob das alles funktioniert, weiss ich auch nicht. Wenn es nicht funktioniert, würde mich mal ein kleines Beispiel interessieren. Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Martin v. Löwis:
Man muss das "setting" "input_encoding" festlegen. Offenbar gibt es da mehrere Möglichkeiten, u.a. Kommandozeilen-Optionen. frontend.py kennt '--input-encoding', kurz '-i'.
Ob das alles funktioniert, weiss ich auch nicht. Wenn es nicht funktioniert, würde mich mal ein kleines Beispiel interessieren.
Folgendes erhält immerhin die Codierung. Aber bei Eingabe von 'ascii' oder 'unicode' fuer die Ausgabe kommt ein unschoener UnicodeError... Abgesehen von dem ganzen HTML-Schlunz drumherum in der Ausgabe, den ich auch noch nicht richtig losgeworden bin... ------------------------------------------------------------ #! /usr/bin/env python from docutils.core import publish_string def test(input): settings = {'input_encoding': 'latin-1', 'output_encoding': 'latin-1'} output = publish_string( input, writer_name='html', settings_overrides=settings) return output input = "Hägar" # Haegar! output = test(input) print input print output ------------------------------------------------------------ Dinu -- Dinu C. Gherman ...................................................................... "One of the great things about books is sometimes there are some fantastic pictures." (George W. Bush, 3 Jan. 2000) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Dinu Gherman <gherman@darwin.in-berlin.de> writes:
Folgendes erhält immerhin die Codierung. Aber bei Eingabe von 'ascii' oder 'unicode' fuer die Ausgabe kommt ein unschoener UnicodeError...
Wo gibst Du 'ascii' oder 'unicode' ein? Als input_encoding? Da kommt natürlich ein UnicodeError - Dein Input ist weder ASCII noch Unicode. Wenn man das output_encoding weglässt, wird UTF-8 verwendet, das funktioniert doch auch ganz gut, oder? Gibst Du 'unicode' als Ausgabe-Encoding an, funktioniert wenigstens bei mir der Aufruf von test() problemlos. Erst die Ausgabe mittels print scheitert - wenig verwunderlich, weil dazu ja das system-encoding verwendet wird, und das ist ASCII. (Genauer gesagt hat es bei mir funktioniert, weil ich Python 2.3 verwende, und dort bei Ausgabe aufs Terminal das Encoding der locale verwendet wird).
Abgesehen von dem ganzen HTML-Schlunz drumherum in der Ausgabe, den ich auch noch nicht richtig losgeworden bin...
Nun ja, bei einer Ausgabe "als HTML" würde ich schon mit einer gewissen Menge HTML-Schlunz rechnen... Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Martin v. Löwis:
Dinu Gherman <gherman@darwin.in-berlin.de> writes:
Folgendes erhält immerhin die Codierung. Aber bei Eingabe von 'ascii' oder 'unicode' fuer die Ausgabe kommt ein unschoener UnicodeError...
Wo gibst Du 'ascii' oder 'unicode' ein? Als input_encoding? Da kommt natürlich ein UnicodeError - Dein Input ist weder ASCII noch Unicode. Wenn man das output_encoding weglässt, wird UTF-8 verwendet, das funktioniert doch auch ganz gut, oder? Gibst Du 'unicode' als Ausgabe-Encoding an, funktioniert wenigstens bei mir der Aufruf von test() problemlos. Erst die Ausgabe mittels print scheitert - wenig verwunderlich, weil dazu ja das system-encoding verwendet wird, und das ist ASCII. (Genauer gesagt hat es bei mir funktioniert, weil ich Python 2.3 verwende, und dort bei Ausgabe aufs Terminal das Encoding der locale verwendet wird).
Beim Output gebe ich's ein, Unicode geht auch, nur ausgeben kann man's halt nicht direkt, soweit richtig.
Abgesehen von dem ganzen HTML-Schlunz drumherum in der Ausgabe, den ich auch noch nicht richtig losgeworden bin...
Nun ja, bei einer Ausgabe "als HTML" würde ich schon mit einer gewissen Menge HTML-Schlunz rechnen...
Ja und nein, je nachdem, was man will. Ich will nur HTML-Schnipsel und keine vollstaendigen Dokumente konvertieren. Ein bischen wundert mich, dass Docutils aus 'abc " 012' das hier macht: "abc " 012", auch wenn latin-1 im Output-Encoding beibehalten wird, wo ich doch sehr annehme, dass " auch in Latin-1 enthalten ist... aber egal. Dinu -- Dinu C. Gherman ...................................................................... "La vérité est un moyen. Il n'est pas le seul." (Paul Valéry) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Dinu Gherman wrote:
Ja und nein, je nachdem, was man will. Ich will nur HTML-Schnipsel und keine vollstaendigen Dokumente konvertieren. Ein bischen wundert mich, dass Docutils aus 'abc " 012' das hier macht: "abc " 012", auch wenn latin-1 im Output-Encoding beibehalten wird, wo ich doch sehr annehme, dass " auch in Latin-1 enthalten ist... aber egal.
Schon - aber nicht in HTML, zumindest nicht immer. Wenn Du einen Attributwert hast, indem " vorkomment, kannst Du nicht schreiben <foo bar="abc " 012"/> Stattdessen wäre <foo bar="abc " 012"/> richtig (oder fast richitg: müsste es nicht eigentlich &dquot; heissen??) Wenn man also auf Nummer Sicher gehen will, and ersetzt man alle " und ' durch entity references. Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
"Martin v. Löwis"
-
Dinu Gherman
-
martin@v.loewis.de