UTF7 gibt "+" mal garnicht und mal als "?" aus ?
-
Hallo,
ich möchte Textdateien später nach bestimmten Zeichen durchsuchen.
Nun habe ich eine kleine Methode die mir die Datei komplett auf der Konsole ausgibt:void ausgeben(String^ datei){ array<String^>^ inhalt; inhalt=File::ReadAllLines(datei, System::Text::Encoding::UTF7); for each(String^ s in inhalt) Console::WriteLine(s); getch(); }
Meine Testdatei sieht wie folgt aus:
+0.0 test1 üüüüääääööö^^!!""§§$$%%&&//(())==??``ßß``##++**''/*-+ +4.0 test3 +6.0 test4 +8.0 test5 +60.0 test6 +64.0 test7 +68.0 test8 +72.0 test9 +76.0 test10 +80.0 test11 +82.0 test12 +84.0 test13 +86.0 test14 +90.0 test15 +92.0 test16 +94.0 test17 +96.0 test18 +100.0 test19 +104.0 test20 +108.0 test21 +112.0 test22 +116.0 test23 +120.0 test24 +124.0 test25 +128.0 test26
Nun ist das Problem, dass bei der Ausgabe auf dem Bildschirm das "+" mal weggelassen wird und mal in ein "?" umgewandelt wird.
Wie kann das sein?Hier meine Ausgabe mit UTF7:
http://img67.imageshack.us/img67/8489/utfpy8.png
Mit UTF8 werden leider keine äöü ausgegeben und mit UTF32 wird garnichts ausgegeben.Über Hilfe, einen kleinen Tip oder einen nützlichen Link würde ich mich sehr freuen
Gruß
ich988
-
Du solltest vielleicht das *passende* Encoding verwenden!
WELCHES Encoding hat denn die Datei?
Vermutlich doch Codepage 1252, oder?Verwende also:
inhalt=File::ReadAllLines(datei, System::Text::Encoding::GetEncoding(1252));
-
Jochen Kalmbach schrieb:
WELCHES Encoding hat denn die Datei?
Das hab ich mich auch gefragt. Es handelt sich um eine standard Textdatei. Daher sollte es einfach zu finden sein. Aber irgendwie war ich unfähig Google so zu bedinen das es mir ein Ergebnis ausspuckt.
GetEncoding(1252) hat geholfen
Wie kann man denn sehen welchen Format man benötigt? Hab in der Richting nix gefunden.
Auf jedenfall vielen Dank für die Hilfe das hat schon super geholfen
-
ich988 schrieb:
Wie kann man denn sehen welchen Format man benötigt? Hab in der Richting nix gefunden.
Du kannst es nicht _sehen_, Du musst es *wissen*.
Dazu gibt es i.d.R. _Beschreibungen_ zu Datenformaten.Einzige Ausnahme: Wenn die Datei einen BOM enthält, kannst Du es tatsächlich _sehen_
-
Hehe
OK dann muss ich mein Wissen weiter vertiefen, damit ich es in Zukunft weis
Auf jedenfall nochmals Danke wäre da sonst nicht drauf gekommen.
-
Jochen Kalmbach schrieb:
ich988 schrieb:
Wie kann man denn sehen welchen Format man benötigt? Hab in der Richting nix gefunden.
Du kannst es nicht _sehen_, Du musst es *wissen*.
Kann man sich nicht irgendwie die default-Codepage holen?
-
default-Codepage sagt mir leider nichts
Bin noch Anfänger.
Ich konvertiere PDF-Dateien in Textdateien und muss mir dort Werte auslesen.
-
Badestrand schrieb:
Kann man sich nicht irgendwie die default-Codepage holen?
Es hilft ja nichts... wenn er nicht *weiss* dass die Datei in der _Default_-Codepage ist, dann hilft es auch nichts, wenn er noch 1000 andere Codepages holen _könnte_...
PS: Die Default-Encoding bekommt man so:
Encoding::Default
(wer hätte das gedacht
)
-
Jochen Kalmbach schrieb:
Es hilft ja nichts... wenn er nicht *weiss* dass die Datei in der _Default_-Codepage ist, dann hilft es auch nichts, wenn er noch 1000 andere Codepages holen _könnte_...
Stimmt schon, aber irgendwie muss man ja vorgehen. Ich vermute halt immer die Default-Codepage, wenn kein BOM da ist, oder wie machst du das?
-
Ich *definiere* immer die Schnittstelle in einem Dokument. Und dort ist es genau beschrieben. Somit gibt es nie Unklarheiten.
Beruflich hab ich mit sehr vielen verschiedenen Firmen und Schnittstellen zu tun. Wenn Du es nicht definierst, intepretiert es jeder anders...
Und i.d.R. werden die Dateien ja auf einem Rechner erstellt und auf einem anderen eingelesen. Jetzt setzt Du voraus, dass beide die _gleichen_ Ländereinstellungen haben, was (aus Erfahrung) meistens _nicht_ der Fall ist.Somit kommt man über eine genaue _Beschreibung_ nicht herum
-
Das klingt sinnvoll! Danke für den Einblick, meine Sicht ist manchmal etwas eingeschränkt denn meistens wurschtel ich nur für westliche Desktop-Systeme