Unicode hieroglyphen in python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Felix 2000
User
Beiträge: 4
Registriert: Freitag 4. September 2015, 18:56

Hallo,
da ich mich schon lang für die Ägyptologie interessiere und nun auch dabei bin Mittelägyptisch zu lernen wollte ich -um das übersetzen zu vereinfachen- ein Dictionary deutsch - mittelägyptisch programmieren. Da ich wusste das python Unicode unterstützt und es eine unicodeliste für Hieroglyphen gibt, dachte ich es wäre kein Problem
diese Zeichen unter Python zu benutzen. Doch als ich einen solchen Code, als Text mit print benutzte kam nur eine Fehlermeldung. Nun meine Frage: muss man um bestimmte Zeichen nutzen zu können irgendetwas verändern und wenn ja was ?
Danke im Vorraus





PS: Tut mir leid wenn so eine Frage bereits gestellt worden ist.
BlackJack

@Felix 2000: Die Fehlermeldung müssen wir nun raten?

Grundsätzlich muss bei Python 2 die Kodierung des Quelltextes als spezieller Kommentar angegeben werden wenn etwas ausserhalb von ASCII im Quelltext vorkommt, damit der Compiler weiss wie er diese Bytes aus der Quelltextdatei interpretieren muss.

Und wenn Du ``print`` verwendest, dann muss das Ausgabeziel eine Kodierung verwenden in der man alles was man ausgeben möchte auch tatsächlich kodieren kann. Ich denke Deine Anwendung solltest Du gleich von vornherein als GUI-Anwendung planen, denn Konsoleneinstellungen betreffend der Kodierung überfordern die meisten Anwender. Einige Programmierer auch. :-)
Felix 2000
User
Beiträge: 4
Registriert: Freitag 4. September 2015, 18:56

Ich habe es wie folgt versucht:>>> print (u,"1303D")
Das u -so habe ich es zumindest im Internet gelesen- "sagt" Python das nun ein Unicode String folgt.
Die Fehlermeldung darauf war : Traceback (most recent call last): File "(stdin)"; line 1, in (module)
NameError: name `u`is not defined
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das Komma zwischen dem u und dem String Literal gehört da nicht hin. Du solltest darüberhinaus auch damit rechnen dass nur wenige Schriftarten Hieroglyphen beeinhalten und die somit nicht unbedingt im Terminal angezeigt werden. Unter Windows könnte es auch sein dass diese Zeichen nicht mit indem von cmd.exe verwendeten encoding repräsentiert werden können.
Felix 2000
User
Beiträge: 4
Registriert: Freitag 4. September 2015, 18:56

Danke für die schnellen Antworten,
gibt es trotzdem einen weg ein solches Wörterbuch nur als script zu programmieren oder sollte ich vieleicht eher versuchen eine Gui mit Tkinter zu schreiben welche dann bei einer vokabel dann eine Bilddatei zeigt (wäre so etwas möglich?).
BlackJack

@Felix 2000: Wieso bei einer GUI dann Bilddateien verwenden? GUI-Rahmenwerke kommen in der Regel direkt mit Unicode-Zeichenketten klar. Und wenn ein Benutzer sinnvolle Verwendung für Hieroglyphen hat, dann hat der in der Regel auch eine Schriftart die solche Zeichen enthält. Oder Du packst eine entsprechende (freie) Schriftart bei.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Felix 2000: Dass die Schriftart eines Terminals bestimmte Zeichen nicht korrekt darstellen kann, heißt noch lange nicht, dass es unmöglich sei, diese Schriftzeichen generell anzuzeigen.

Schriftarten funktionieren aus Programmierer-Sicht so, dass für jedes Zeichen ein bestimmter Code zugeordnet wird. Diese Codes werden dann intern im Programm gespeichert. An den Stellen, wo die Schrift tatsächlich für den Benutzer angezeigt werden muss, wird dann wieder die entsprechende Übersetzung gemacht.

Das heißt: Du kannst problemlos mit Informationen zu Schriftzeichen hantieren, die möglicherweise nicht überall darstellbar sind. Der Knackpunkt ist wie gesagt nur die eigentliche Anzeige.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

DasIch hat geschrieben:Unter Windows könnte es auch sein dass diese Zeichen nicht mit indem von cmd.exe verwendeten encoding repräsentiert werden können.
Mit dem Befehl ``chcp`` lässt sich dort aber das Encoding anpassen.
Felix 2000
User
Beiträge: 4
Registriert: Freitag 4. September 2015, 18:56

Danke für die Antworten ich werde versuchen grafisch darzustellen
Antworten