[Python-de] Merkwuerdiges bei "umlaut".upper()

Dinu Gherman gherman at darwin.in-berlin.de
Die Mai 24 14:37:14 CEST 2005


Martin v. Löwis:

> Vorsicht mit Nicht-ASCII-Zeichen im interaktiven Modus. Unter OSX
> gibt es in Terminal.app keine Möglichkeit herauszubekommen, welches
> encoding das Terminal gerade verwendet, deshalb kann Python das
> auch nicht wissen. Ich hoffe (schwach) dass das in 10.4 verbessert
> wurde (glaube aber eigentlich nicht dran).

Eine kleine Abschweifung zu dem Thema gefaelligst, das mir eine fast
schlaflose Nacht bereitete...? Also gut...

Das ist vermutlich ein Teil des Problems. Ich hatte mich schon ge-
wundert, warum meine Terminal-Eingaben anscheinend in UTF-8 waren.
Tatsache ist, die Standard-Codierung findet man sehr wohl heraus,
die steht in ~/Library/Preferences/com.apple.Terminal.plist, leider
als Aufzaehlungstyp, fuer den ich die Nummerierung noch nicht heraus
habe, aber folgende Zeilen gelten fuer UTF-8:

	<key>StringEncoding</key>
	<string>4</string>

Kniffliger wird es, wenn man fuer ein bestimmtes, geoeffnetes Fen-
ster eine solche Einstellung aendert. Dann kann ein Programm wohl
wirklich nur per AppleScript an die Einstellungen kommen. Leider
kenne ich mich damit zu wenig aus und habe im Internet kaum brauch-
bare Dokumente gefunden, wie man allgemein herausfindet, wie die
AppleScript-Schnittstelle einer Anwendung aussieht bzw. die Abbil-
dung ihrer Systemeinstellungen auf AppleScript-Bezeichner. Hier
nur ein sehr einfaches Beispiel zum Setzen der Textfarbe im vor-
dersten Fenster (sieht merkwuerdig aus, geht aber:

     osascript -e 'tell application "Terminal" to tell its front window 
to set its normal text color to "blue"'

Eigene Nachforschungen in den Anwendungsordnern (.app) unter OS X
foerderten bei mir die Einsicht zu Tage, dass es darin Dateien gibt,
die beschreiben, was die Anwendung AppleScript-seitig so kann. Nur
ist Terminal.app, jedenfalls unter 10.3 da relativ schwach und kann
nur Fenster-, aber keine Textattribute lesen/setzen, wie man hier
sieht:

     osascript -e 'tell window 1 of app "Terminal" to get its properties'

, number of rows:16, bold text color:black, processes:login, bash, 
tcsh, osascript, cursor color:21823, 21823, 21823, frame:35, 465, 743, 
252, size:743, 252, busy:true, title displays window size:true, 
origin:35, 465, frontmost:true, zoomed:false, miniaturized:false, 
name:Terminal — osascript — 120x16, floating:false, modal:false, 
miniaturizable:true, visible:true, closeable:true, resizable:true, 
zoomable:true, id:14764, titled:false, index:1, class:window

Lustigerweise kommt man zwar auch an den Fensterinhalt heran, naemlich
mit:

     osascript -e 'tell window 1 of app "Terminal" to get its contents'

aber anscheinend nur fuer "andere" Fenster (mit window 2, etc) und/oder
nur mit dem Programm Script Editor.app...

Irgendwie ist das alles ziemlich Voodoo-maessig... Und ich habe keine
Ahnung, ob das unter 10.4 (Tiger) anders/besser ist... Ich glaube, die
Umgebungsvariablen wie LANG werden von Terminal.app voellig ignoriert.
Ach ja, wenigstens scheint die Sonne ein bischen...

Ja, man koennte auch die Standardeinstellungen im Hintergrund temporaer
andern und ein neues Fenster aufmachen... Vielleicht geht ja wenigstens
so etwas mit AppleScript. Wer sich das nur ausgedacht hat, eine Art Pro-
grammiersprache fuer Nicht-Programmierer...

Seufz,

Dinu