Seite 1 von 1

Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 14:56
von knekke
Hi,

ich bin gerade dabei Sublime Text 2 zu testen, scheitere aber kläglich an irgendwelchen encoding einstellungen. Nun muss man dazu sagen, dass ich absolut kein Profi auf diesem Gebiet bin, und mich bislang immer nur irgendwie durchgefrickelt habe.
Das Problem ist, dass folgendes Skript:

Code: Alles auswählen

print "unicode über alles!".decode('utf-8')
astrein auf dem Windows Commandprompt (ja, ich wuerde auch lieber an einer Linux Maschine sitzen) ausgegeben wird, in der Sublime Console aber das hier ausspuckt:

Code: Alles auswählen

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 8: ordinal not in range(128)
Ich habe mich in den letzten 2 Stunden fast zu Tode gegoogelt, und bin unter anderem auf das hier gestossen..

Hilft aber nix :/
Ich habe gesehen, dass einige hier im Forum Sublime benutzen.... please help me ObiWan!

gruss aus Schweden,
Thomas

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 16:08
von BlackJack
@knekke: Du musst die Unicode-Zeichenkette vorher kodieren. Und zwar in der Kodierung welche das Programm erwartet was „hinter der Standardausgabe sitzt”. Diese Kodierung musst *Du* kennen. Weil man die nicht zuverlässig erraten kann.

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 16:13
von knekke
Und in diesem konkreten Fall wuerde ich das wie genau machen?

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 16:21
von lunar
@knekke

Code: Alles auswählen

print u"unicode über alles!".encode('utf-8')
Und lese ein bisschen...

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 16:28
von knekke
Prima! Danke fuer die links!

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 17:13
von knekke
Aber mal eine Frage an die Sublime user: Wie bekomme ich es denn hin, dass sich Sublime und Command Prompt gleich verhalten?
Das beispiel von lunar sieht jetzt prima aus in Sublime, aber unschön in cmd....

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 20:14
von lunar
@knekke Gar nicht. Willkommen in der hässlichen Welt der Textkodierung.

Du kannst allenfalls versucht, die Kodierung der Ausgabeschnittstelle zu ermitteln. Dazu gibt es diverse Anlaufstationen, u.a. "sys.stdout.encoding", e.g.

Code: Alles auswählen

print u"unicode über alles!".encode(getattr(sys.stdout, 'encoding', None) or 'utf-8')
Edit: Natürlich besser so:

Code: Alles auswählen

print u"unicode über alles!".encode(getattr(sys.stdout, 'encoding', 'utf-8'))
Danke, BlackJack :)

Re: Sublime und Unicode

Verfasst: Freitag 4. Januar 2013, 22:44
von BlackJack
@lunar: Warum `None` durch diesen ``or``-Hack ersetzen wenn man da auch gleich den Rückfallwert verwenden könnte?

Re: Sublime und Unicode

Verfasst: Samstag 5. Januar 2013, 13:09
von lunar
@BlackJack: Gute Frage :)

Re: Sublime und Unicode

Verfasst: Samstag 5. Januar 2013, 13:49
von Sirius3
@BlackJack, lunar: Weil falls die Ausgabe in eine Datei umgeleitet wird, None in stdout.encoding steht.

Re: Sublime und Unicode

Verfasst: Samstag 5. Januar 2013, 18:19
von lunar
@Sirius3 In diesem Fall kann man sich dann das ganze Gefrickel mit "getattr()" sparen, oder?

@knekke Du siehst, am Umgang mit Kodierung haben sogar erfahrene Entwickler zu knabbern ;)

Re: Sublime und Unicode

Verfasst: Samstag 5. Januar 2013, 19:16
von Sirius3
@lunar: bestimmt haben nicht alle File-like-Klassen ein encoding Attribut,
aber solange niemand von Hand stdout verbiegt, kann man sich tatsächlich getattr sparen.

Ja, StringIO hat z.B. kein encoding.

Re: Sublime und Unicode

Verfasst: Montag 7. Januar 2013, 11:15
von knekke
Vielen Dank fuer die Antworten!
Hier gibt es nun genug Ansätze, um mir jedesmal eine funktionierende Lösung zurechtzufrickeln :)
Das interesse ist leider nicht gross genug um mich allzutief in die Materie vorzuwagen (die Links habe ich allerdings ueberflogen)...


gruss aus Schweden,
Thomas

Re: Sublime und Unicode

Verfasst: Montag 7. Januar 2013, 11:18
von knekke
...und sorry fuer den spam, aber ich wollte schnell mal die 100 Beiträge vollmachen :mrgreen:

Re: Sublime und Unicode

Verfasst: Montag 7. Januar 2013, 11:42
von BlackJack
Glückwunsch zum 100. :D