Länge eines unicode und utf-8 strings falsch
Verfasst: Samstag 16. Juni 2012, 08:50
Hallo Leute,
mein Ziel war, Text mit Konsolenmitteln zu umrahmen, dh. aus
sollte
werden. Eigentlich nicht sonderlich schwierig (dachte ich). Nun aber folgendes:
Dies ergab dann unerwarteterweise folgende Ausgabe:
Ich sehe gerade, dass die Textausgabe im Code-Abschnitt nicht wie gewollt mittels BBC-Code angezeigt wird. Die Schriftart ist wohl nicht so was wie Courier - irgend eine proportionale Schrift - so kann man den Längenunterschied in den Zeilen leider nicht am Bild erkennen?!?
Werde noch ein Bild meiner Konsolenausgabe ins Netz stellen und verlinken, so dass man das besser erkennen kann...
(Kann man die Schriftart irgendwo einstellen, da [pre]...[/pre] nicht funzt?)
Zeile 4 ist, obwohl dessen Länge exakt angegeben wurde, um 2 Zeichen zu kurz???
An den Umlauten kann es doch wohl nicht liegen, da diese ja in mehreren Zeilen vorkommen und die Längn dort wie gewollt dargestellt sind. Irgendwie will es mir nicht gelingen den Fehler zu finden. Gestern nicht, heute nicht , morgen...
Seht ihr mehr?
Danke im Voraus
-----------------------------
System: openSuse 11.4-78 (Zeile 7)
mein Ziel war, Text mit Konsolenmitteln zu umrahmen, dh. aus
Code: Alles auswählen
Das ist ein TextCode: Alles auswählen
+------------------+
| Das ist ein Text |
+------------------+
Code: Alles auswählen
BLA = u"""TExt, der beabsichtigt wüst formatiert ist!
Hier nun etwas mehr Text, um festzustellen, ob dieser auch
tatsächlich so schön formatiert wird wie erwartet!
Hier mal ein paar Sonderzeichen, mit AltGr und
allen Tastaturelementen:
obere Zeile:
@ ł € ¶ ŧ ← ↓ → ø þ ¨ ~
mittlere Zeile:
æ ſ ð đ ŋ ħ ł ˝ ^ `
untere Zeile:
| » « ¢ „ “ ” µ · …
Das ist ein weiterer Absatz, nur um festzustellen, dass auch
Leer- und Tabulatorzeichen exakt verarbeitet werden.
Noch mal eine Zeile, in welche ein paar Umlaute äöüß eingefügt sind.
"""
ENC = "utf-8"
TAB = u" "
formatstr = u"{:<%s}" % (74,)
i = 1
for zeile in BLA.split(os.linesep):
z = zeile.replace("\t", TAB)
out = u"| %s |" % (formatstr.format(z),)
print out.encode(ENC) + "<-%s (Zeile %s)" % (len(out),i)
i += 1
Code: Alles auswählen
| TExt, der beabsichtigt wüst formatiert ist! |<-78 (Zeile 1)
| |<-78 (Zeile 2)
| Hier nun etwas mehr Text, um festzustellen, ob dieser auch |<-78 (Zeile 3)
| tatsächlich so schön formatiert wird wie erwartet! |<-78 (Zeile 4)
| |<-78 (Zeile 5)
| Hier mal ein paar Sonderzeichen, mit AltGr und |<-78 (Zeile 6)
| allen Tastaturelementen: |<-78 (Zeile 7)
| |<-78 (Zeile 8)
| obere Zeile: |<-78 (Zeile 9)
| @ ł € ¶ ŧ ← ↓ → ø þ ¨ ~ |<-78 (Zeile 10)
| mittlere Zeile: |<-78 (Zeile 11)
| æ ſ ð đ ŋ ħ ł ˝ ^ ` |<-78 (Zeile 12)
| untere Zeile: |<-78 (Zeile 13)
| | » « ¢ „ “ ” µ · … |<-78 (Zeile 14)
| |<-78 (Zeile 15)
| |<-78 (Zeile 16)
| |<-78 (Zeile 17)
| Das ist ein weiterer Absatz, nur um festzustellen, dass auch |<-78 (Zeile 18)
| Leer- und Tabulatorzeichen exakt verarbeitet werden. |<-78 (Zeile 19)
| Noch mal eine Zeile, in welche ein paar Umlaute äöüß eingefügt sind. |<-78 (Zeile 20)
| |<-78 (Zeile 21)
Ich sehe gerade, dass die Textausgabe im Code-Abschnitt nicht wie gewollt mittels BBC-Code angezeigt wird. Die Schriftart ist wohl nicht so was wie Courier - irgend eine proportionale Schrift - so kann man den Längenunterschied in den Zeilen leider nicht am Bild erkennen?!?
Werde noch ein Bild meiner Konsolenausgabe ins Netz stellen und verlinken, so dass man das besser erkennen kann...
(Kann man die Schriftart irgendwo einstellen, da [pre]...[/pre] nicht funzt?)
Zeile 4 ist, obwohl dessen Länge exakt angegeben wurde, um 2 Zeichen zu kurz???
An den Umlauten kann es doch wohl nicht liegen, da diese ja in mehreren Zeilen vorkommen und die Längn dort wie gewollt dargestellt sind. Irgendwie will es mir nicht gelingen den Fehler zu finden. Gestern nicht, heute nicht , morgen...
Seht ihr mehr?
Danke im Voraus
-----------------------------
System: openSuse 11.4-78 (Zeile 7)