Seite 1 von 1

Probleme mit Sonderzeichen

Verfasst: Sonntag 5. Oktober 2003, 16:50
von wuf
Hallo Python Freunde

Habe meine Python Software von
Version 2.2 auf Version 2.3
aktualisiert. Ich möchte in
der Titelleiste folgenden
Titeltext einblenden:

"Beschleunigung [m/s²]"

Python oder TK scheint den
Exponenten ² als ein Zeichen
aus dem alten Europa zu be-
handeln. Gibt es eine Möglich-
keit dieses Sonderzeichen
trotzdem anzuzeigen?

Besten Dank für Eure Hilfe
Gruss von Fritz

N.B. Mit Python 2.2 und Tk8.3
Funktioniert es richtig.

Code: Alles auswählen

# -*- coding: UTF-8 -*-

#~~ Python  = Version 2.3
#   Tkinter = Bibliothek Tk8.4
#   Autor   = Fritz Wüst

from Tkinter         import *

if __name__ == '__main__':

	hf = Tk()
	hf.title('Beschleunigung [m/s²]')
	hf['width' ] = 250
	hf['height'] = 200

	hf.mainloop()

Verfasst: Sonntag 5. Oktober 2003, 17:02
von Dookie
Hi Fritz,

das hängt auch von Deinem OS und Deinem Editor ab, ob der wirklich utf-8 schreibt. Bei mir unter Linux funktionierts mit dem ².


Gruß

Dookie

Verfasst: Sonntag 5. Oktober 2003, 19:05
von Gast
Hallo Dookie

Besten Dank für Deine sofortige Antwort.

Mein OS hier ist Windows 2000.
Ich habe meine Source mit dem Titeltext
auch vom IDLE und Pythonwin 2.3.2 aus
gestartet. Beim IDLE wird der Exponent
auch als Rechteck ausgegeben. Pythonwin
gibt den Exponenten als "?" aus.
Ich probierte es auch unter Linux SuSE 8.2
unter Python 2.2 zusammen mit Tk8.4. Das
Resultat bei Linux war auch ein "?" als
Exponenten. Ich editiere meine Programm-
sourcen mit dem "Crimson-Editor 3.51" mit
dem ich sehr gute Erfahrungen gemacht habe.
Vielleicht liegt das Problem bei Tk8.4.


Nochmals besten Dank.
Gruss Fritz

Verfasst: Sonntag 5. Oktober 2003, 19:29
von Dookie
ich glaube das liegt ganz einfach am Zeichensatz. Ich editiere meine Programme mit vim und stelle (bzw lasse das automatisch stellen) das Fileencoding auf utf-8. So werden auch Sonderzeichen richtig in utf-8 codiert beim speichern.
Du must das beim Crimson-Editor im Document-Menu bei Encoding Type einstellen, dann sollte es mit Python2.3 klappen.

Gruß

Dookie

Verfasst: Samstag 11. Oktober 2003, 20:29
von wuf
Hallo Python & Tkinter Freunde

Warum werden unter Python 2.3 und
Tkinter Tk8.4 Sonderzeichen wie
Exponenten und Mikro (Griechische)
-Symbole) nicht mehr dargestellt.
Das ist doch nicht möglich ?!
Physikalische Einheiten braucht es
doch auf jeder Grafischen Darstellung.

Unter Python 2.2 und Tkinter Tk8.3
funktioniert es bestens.

Unter Windows werden die Sonderzeichen
als Rechtecke und unter Linux SuSE 8.2
als Fragezeichen dargestellt.

Verwendete Editoren:
Windows: Crimson
Linux: Kate, KWrite, Vim

Für jeden Tip um diese Problem in den
Griff zu bekommen bin ich Euch sehr Dankbar.
Gruss Fritz

Der folgende Code schreibt etwas mit
Sonderzeichen auf eine Canvasfläche:


Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

#~~ Python  = Version 2.3
#   Tkinter = Bibliothek Tk8.4
#   Autor   = Fritz Wüst

from Tkinter         import *
from string          import *

if __name__ == '__main__':

	hf = Tk()

	canvas = Canvas(hf,bg='lightsteelblue',bd=1,relief="ridge",width=200,height=100)
	canvas.pack()

	text = canvas.create_text(10,10,text= "Beschleunigung [m/s²]",anchor="w")
	text = canvas.create_text(10,25,text= "Basisstrom [µA]",anchor="w")

	hf.mainloop()

Verfasst: Samstag 11. Oktober 2003, 21:59
von Dookie
Hi wuf,

unter Debian SID mit Python2.3 und TK 8.4 funktionierts.
Bild
Hast Du vor dem speichern mit vim mittels :set fenc=utf-8 auch das fileencoding auf utf-8 gesetzt?


Gruß

Dookie

Verfasst: Samstag 11. Oktober 2003, 22:09
von Dookie
Natürlich muss auch der Zeichensatz, den TK verwendet die entsprechenden Zeichen darstellen können, vielleicht liegts daran?

Dookie

Verfasst: Sonntag 12. Oktober 2003, 17:03
von wuf
Hi Dookie

Dein Tip mit :set fenc=utf-8 wirkte
Wunder. Mit dem Vim Editor habe ich
bis jetzt noch nie etwas editiert.
Somit war Vim für mich Neuland obwohl
er scheinbar auf jeder Linuxinstallation
verfügbar ist. Vim erinnert mich an
frühere Zeiten als Sourcen für Assembler
noch mit textorientierten Editoren ge-
schrieben wurden. Bei meinem Crimson-
Editor für Windows (Release 3.51) ist
unter dem "Menü Document" -> "Encoding-
Type" -> "Unicode Encoding" vorhanden
aber ist nicht aktivierbar.

Die Anweisung # -*- coding: UTF-8 -*-
am Anfang eines Python-Skripts genügt
also noch nicht um den Python-Interpreter
automatisch auf UTF-8 Verarbeitung um-
zuschalten?

Gibt es für Windows auch Editoren die
auf UTF-8 umschaltbar sind?

Ok Dookie
Danke für Deinen hilfreichen Tip
Gruss wuf :D

Verfasst: Sonntag 12. Oktober 2003, 17:26
von Gast
wuf hat geschrieben:Hi Dookie

Dein Tip mit :set fenc=utf-8 wirkte
Wunder. Mit dem Vim Editor habe ich
bis jetzt noch nie etwas editiert.
Somit war Vim für mich Neuland obwohl
er scheinbar auf jeder Linuxinstallation
verfügbar ist. Vim erinnert mich an
frühere Zeiten als Sourcen für Assembler
noch mit textorientierten Editoren ge-
schrieben wurden. Bei meinem Crimson-
Editor für Windows (Release 3.51) ist
unter dem "Menü Document" -> "Encoding-
Type" -> "Unicode Encoding" vorhanden
aber ist nicht aktivierbar.

Die Anweisung # -*- coding: UTF-8 -*-
am Anfang eines Python-Skripts genügt
also noch nicht um den Python-Interpreter
automatisch auf UTF-8 Verarbeitung um-
zuschalten?

Gibt es für Windows auch Editoren die
auf UTF-8 umschaltbar sind?

Ok Dookie
Danke für Deinen hilfreichen Tip
Gruss wuf :D

Verfasst: Sonntag 12. Oktober 2003, 17:46
von Dookie
Vim gibts auch für win, und auch für mac, BeOS, Amiga ...
Daneben gibts (zumindest für Linux) noch vimtutor, inzwischen sogar auf Deutsch. Das zeigt recht schön die Bedienung von Vim. Man sollte sich wirklich die Stunde Zeit nehmen das einmal durchzuarbeiten.
Ich verwende Vim für alles, was unter Linux zu editieren ist. Bash-Scripts, Configfiles, Povrayfiles, Html-, PHP- und Pythoncode.

Gruß

Dookie

Verfasst: Sonntag 12. Oktober 2003, 22:26
von Dookie
Noch eine Anmerkung,
Die Anweisung # -*- coding: UTF-8 -*-
am Anfang eines Python-Skripts genügt
also noch nicht um den Python-Interpreter
automatisch auf UTF-8 Verarbeitung um-
zuschalten?
Diese Anweisung soll dem Python-Interpreter sagen, daß die Pythondatei im UTF-8 Code vorliegt. Dazu muss sie natürlich auch in diesem Zeichensatzcoding gespeichert sein. Wenn Du einen "Normalen" Editor nimmst, so wird der in der Zeichensatzcodierung Speichern die in Deinem OS eingestellt ist, also unter Linux in Deutschland/Österreich mit iso-8859-15 und unter Windows mit 1252-ANSI oder sonstwas und da stimmen dann die Zeichen natürlich nicht mit dem UTF-8 Zeichen überein.


Gruß

Dookie