@BlackJack:
Ich hab mir jetzt noch mal überlegt, was du da eigentlich geschrieben hast, aber das ergibt doch absolut gar keinen Sinn. Du schreibst:
BlackJack hat geschrieben:@Hellstorm: Irgendwo müssen Texte in Bytes umgewandelt werden wenn sie das Programm verlassen beziehungsweise von Bytes in Text wenn sie das Programm betreten.
Aber was sind denn Texte überhaupt? Und was sind Bytes? Ein Text ist doch einfach nur eine Aneinanderreihung von Zeichen, die halt in irgendeiner Zeichenkodierung kodiert werden. Ein „A“ sitzt doch einfach nur an der Position 61 (bzw. 41 in Hex) und ist dementsprechend in Bytes kodiert. Das kann doch an gar keiner Stelle irgendwo als „Text“ kodiert werden und ist
immer in Bytes. Selbst im Programmtext ist es doch als Bytes gespeichert (Im Arbeitsspeicher weiß ich nicht genau, aber da geh ich auch mal davon aus).
Und ob das jetzt in ASCII oder UTF-8 ist, ist doch egal. Bei UTF-8 ist doch nur der Unterschied, dass es eine variable Länge ist, also dass 1 Byte nicht unbedingt 1 Buchstabe ist (diese Annahme ist sowieso sehr unrealistisch).
Und die Konsole nimmt doch natürlich immer Zeichen als kodierte Bytes entgegen. Wie sollte sie es denn auch anders machen? Sie könnte natürlich auch direkt die Zeichen als Bitmap entgegennehmen, aber das würde ja bedeuten, dass das Programm schon entscheidet, wie die Zeichen aussehen sollten. Das tut es aber nicht, weil man ja den Text kopieren kann, weil man in der Konsole die Schriftart umstellen kann usw. Du schreibst ja später auch, dass die Konsole in CP850 kodiert ist.
Irgendwie passte das, was du aber auch sagst, ja gar nicht zu meiner Frage. Ich wollte ja nur wissen,
wie genau ich es denn jetzt bewerkstelligen kann, halt allen möglichen Text auszugeben. Die technischen Details interessieren mich zum gegenwärtigen Zeitpunkt halt nicht. Eine Einstellung à la „Die Konsole nimmt ab jetzt Zeichen in UTF-8 entgegen“ und damit wäre es auch getan.
Übrigens funktioniert das weiterleiten in Linux ohne Probleme:
Auch mit einem Hex-Editor ist der richtige Inhalt UTF-8 kodiert enthalten: E6 97 A5 E6 9C AC E8 AA 9E 0A
D.h. es klappt wunderbar ohne Probleme, UTF-8-Strings auf der Konsole unter Linux mit Python zu verwenden. Ich muss mich dort auch um absolut nichts hinsichtlich der Kodierung kümmern, ich benutze einfach eine x-beliebige Sprache im Programmtext und lasse mir den dann auf die Konsole ausgeben. Da dort alles UTF-8 entgegennimmt, kann ich es ohne Probleme weiterverarbeiten und alles stimmt.
cofi hat geschrieben:Dein Windows benutzt als Standardkodierung fuer `cmd.exe` Codepage 850 (darum `File "C:\Programmieren\Python33\lib\encodings\cp850.py"` als Teil des Tracebacks) was natuerlich dein Zeichen nicht darstellen kann (ISO-8859-1 auch nicht, aber das ist zufaelligerweise grossteils mit CP 850 deckungsgleich).
Du kannst allerdings zur UTF-8 Codepage mittels `chcp 65001` wechseln
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Ah genau, so etwas wollte ich wissen, danke

Ich hatte mir jetzt nur gedacht, dass ich, weil ich dieses ConEmu hatte, was auch ziemlich gut klappt, so etwas nicht mehr bräuchte (japanische Dateinamen werden dort nämlich richtig dargestellt). Aber anscheinend ist das mit der Zeichenkodierung noch einmal etwas anderes.
Jetzt klappt es übrigens anscheinend auch (mehr oder weniger), es gibt allerdings noch einige kleinere Schönheitsfehler, da werde ich mich mal nachher dranmachen.
pillmuncher hat geschrieben:Ich habe Cygwin + Vcxsrv installiert und verwende für sowas urxvt-X. Das sieht dann so aus:
Genau so will ich es ja auch haben. Genau darum geht es mir, deswegen versteh ich nicht, wieso BlackJack meint, dass das nicht möglich sein sollte.
Hyperion hat geschrieben:Was ist denn mit der Powershell? Imho ein zu unrecht unbekanntes MS Produkt

(Ok, es gibt natürlich bessere Shells, aber im Gegensatz zur CMD.exe eine Wohltat - inkl. Unixoiden Aliasen

)
Naja, Powershell ist ja wieder was anderes. Ich hab da (noch) keine Erfahrung mit, will das aber auch mal irgendwann zumindest in Grundzügen lernen. Allerdings geht es mir eher um das Konsolen
fenster, und das ist bei der Powershell die gleiche wie bei der cmd.exe.
Danke für eure Antworten
