2016-06-27 11 views
0

Ich schreibe App, die Zeilen aus TXT-Dateien lesen müssen (Dateien sind in ZIP-Archiv gespeichert, so verwende ich C# -Streams, um sie zu entpacken und im Speicher arbeiten) und fortfahren sie.Lesen von Dateien nicht durch Codierung variieren

Eingabedateien sind wie ASCII oder UTF8 codiert (ich weiß nicht, welche welche ist). Daten enthalten Strings, die polnische oder tschechische Zeichen enthalten. Datei sind klein (1-5kB)

Erste Frage Wenn ich Lese-Dateien wie UTF8 erzwinge, sind polnische Buchstaben nicht korrekt aus ASCII-Datei anzuzeigen, und umgekehrt. Irgendeine Idee? Wie kann ich Dateicodierung einfach erkennen? Werden diese Informationen in den Metadaten der TXT-Datei beibehalten?

Zweite Frage: Wenn ich TXT-Datei in NotePad ++ anzeigen kann ich sehen, wie Datei codiert ist. Wie erkennt NotePad ++ das?

+0

https://en.wikipedia.org/wiki/Byte_order_mark –

+1

ich vermute, dass Sie nicht wirklich ASCII meine ... was * genau * meinst du damit? (Es gibt keine Zeichen mit Akzent in ASCII, und jede ASCII-Datei kann als UTF-8 behandelt werden, ohne ihre Bedeutung zu ändern.) –

+0

Es klingt, als ob Sie nach Unicode-Codierung suchen. – Ingenioushax

Antwort

1

Wahrscheinlich sollten Sie nicht zwingen jede Codierung:

String text = File.ReadAllText(@"C:\MyFile.txt"); 

Das System (sowie NotePad +) wird versuchen, die tatsächliche Codierung durch Verwendung zu erfassen, so BOM (Byte Order Mark) genannt

https://en.wikipedia.org/wiki/Byte_order_mark