Arbeiten mit der Konsole (Datei öffnen etc.)
-
die doofe windows konsole kann kein unicode.
-
Mh naja was ich daran nicht ganz verstehe ist eben, er zeigt mir die Zeichen soweit an aber packt noch weitere rein, so als stünde noch mehr Text in der Datei der so nicht direkt sichtbar ist.
Hatte überlegt ob es vielleicht Blanks oder was in der Richtung sein könnten die dann eben als solche Zeichen interpretiert werden und deswegen mit angezeigt werden. Aber da dürften jetzt keine mehr drinstehen oder eigentlich auch keine anderen Zeichen die "umgewandelt" angezeigt werden
-
hmm...hast du ein minibeispiel mit einem zeichen?
-
Also im Prinzip kannst du ja erst mal meinen Quellcode kopieren, musst halt nur das hier:
puts(setlocale(LC_ALL,""));
noch mit einfügen.
Was mir gerade aber mal aufgefallen ist finde ich irgendwie sehr amüsant
Folgendes Szenario:
Ich habe eine Datei erstellt (manuell) in Form einer Textdatei. Diese habe ich die Unicode Codierung zugeordnet (speichern unter halt ^^) und einfach mal das hier:
!"§ÄÜÖ?ßöäüABCD12===<>|;_'*`?`??=()=()/)(%&/%$&&&!§$$*'+#ß092137
reingehauen, soweit so gut, zumindest bei mir zeigt er mir alle Zeichen korrekt an in der Konsole. Jedoch stimmen die Prozentangaben nicht. Schlichtweg aus dem Grund das er mir die Anzahl der Zeichen, hier 64 mit in die Ausgabe (Tabellenform) mit reinpackt.
[ ][64][49%] -> So in der ersten Klammer stehen vermutlich alle Zeichen drin, daneben die Anzahl und Prozent.
Zu dieser, wie ich finde interessanten Angabe ergänzt er mir eben noch weitere Zeichen die nicht in der Datei zu finden sind ^^.
-
ja, die zeichen werden angezeigt, wenn sie in der aktukellen windows-codepage auch drin sind. ansonsten gibts die tollen kästchen.
was deine extra-chars betrifft, hast du den BOM geskippt?
-
Achso, hieße also es werden einfach alle mitangezeigt und man kann das nicht so einfach verhindern? Nur warum kommen diese komischen Werte zustande
Und ich weiss gerade nicht genau was du mit "BOM geskippt" meinst ^^
-
naja, unter windows haut dir z.b. notepad nen bom an den anfang der datei rein. google mal nach byte order mark.
-
das mit dem bom gilt nur für unicode-formate, klar, ne. ansosnsten gilt: was man bei einer bestimmten codepage reinschreibt, kriegt man auch wieder raus - wenn nicht, ist irgendwo ein fehler.
-
Sehr interessant, die BOM Thematik kannte ich bisher noch gar nicht, vielen Dank für die Information. Das es nur für Unicode Formate gilt ist klar.
Die Frage ist nur wie ich das problem lösen kann ^^ Da werde ich gerade noch nicht schlau raus.
Was die Codepage angeht...gibt es da denn keine Möglichkeit das einzugrenzen damit er mir eben nicht diese weiteren Zeichen mit reinnimmt die ja unter anderem mein Ergebnis verfälschen Habe da bisher zumindest nichts zu gefunden.
-
bmth schrieb:
Die Frage ist nur wie ich das problem lösen kann ^^ Da werde ich gerade noch nicht schlau raus.
datei öffnen, und 'nachgucken', ob ein bom vorhanden ist. wenn ja - je nachdem, ob es sich z.b. um das utf 16 little endian -, utf 8- oder sonstwas für ein encoding handelt, ergibt sich die 'bearbeitungs-strategie', bzw. die algorithmen für die nutzdaten. die nutzdaten fangen direkt nach dem bom an, nachdem man ihn eingelesen und dann geskippt (übersprungen) hat.
gibt ja nicht so viele bom, so um die 6 oder so.bmth schrieb:
Was die Codepage angeht...gibt es da denn keine Möglichkeit das einzugrenzen damit er mir eben nicht diese weiteren Zeichen mit reinnimmt die ja unter anderem mein Ergebnis verfälschen Habe da bisher zumindest nichts zu gefunden.
weis der geier, was das für zeichen sind. die windows-konsole ist da leider eingeschränkt, kann nicht alle zeichen anzeigen. kannst ja ne konsole mit nem rich edit control o.ä. emulieren, wenn du unbedingt das konsolen-feeling brauchst. das ding ist toll, zeigt alle zeichen an, ist aber leider auf windows begrenzt. oder etwas mit freetype2 bauen oder so...
mfg,
b0m
-
Ok, das mit dem skippen ist ja die eine Sache, jedoch habe ich noch ein anderes Problem.Meiner Meinung nach hat das jedoch nichts mit der "BOM" Thematik zu tun.
Wenn ich jetzt die paar Testdateien durchgehe ist die Auflistung bei allen Formaten soweit korrekt. Jedoch habe ich z.B. bei "Little Endian" eine falsche Berechnung. Ich weiss nicht warum, aber aus irgendeinem Grund rechnet er mittendrin alle Zeichen zusammen und zeigt mir diese dann so an:
[][63][49%]
Die Addition der anderen Zeichen (mal abgesehen davon dass die 2 Zeichen durch das BOM noch mitaufgelistet werden) klappt soweit. Aber natürlich ist das Ergebnis dann eben insgesamt falsch was die Prozentwerte angeht