Frage

Beim Lesen von Daten aus der Input-Datei habe ich gemerkt, dass die ¥ symbom wurde nicht gelesen von der StreamReader.Mozilla Firefox zeigte den Eingang Datei Typ wie Western (ISO-8859-1).

Nach dem spielen, um mit dem encoding-Parameter, fand ich es erfolgreich für die folgenden Werte:

System.Text.Encoding.GetEncoding(1252) // (western iso 88591)

System.Text.Encoding.Default 

System.Text.Encoding.UTF7

Nun, ich bin der Planung über die Verwendung der "Default" - Einstellung, aber ich bin mir nicht ganz sicher, ob diese Entscheidung die richtige ist.Der vorhandene code nicht verwenden keine Kodierung und ich bin besorgt, dass ich vielleicht etwas zu brechen.

Ich weiß sehr wenig (BZW. gar nichts) über die Codierung.Wie mache ich das?Meine Entscheidung für die Verwendung von System.Text.Codierung.Standard sicher?Sollte ich werden Fragen die Benutzer zu speichern die Dateien in einem bestimmten format ?

War es hilfreich?

Lösung

Codepage 1252 ist nicht ganz das gleiche wie ISO-Latin-1. Wenn Sie ISO-Latin-1, verwenden Sie Encoding.GetEncoding(28591). Allerdings würde ich erwarten, dass sie die gleichen für diesen Codepunkt (U + 00A5) sein. UTF-7 ist ganz anders (und fast nie, was Sie verwenden möchten).

Encoding.Default ist nicht sicher - es ist eine wirklich schlechte Idee in den meisten Situationen. Es ist spezifisch für den jeweiligen Computer Sie laufen auf. Wenn Sie übertragen eine Datei von einem Computer zum anderen, die, was die ursprüngliche Computer codiert, weiß wurde mit?

Wenn Sie wissen, dass Ihre Datei in ISO-8859-1 ist, dann ausdrücklich, dass verwenden. Was ist die Herstellung dieser Dateien? Wenn sie nur durch den Benutzer gespeichert werden, welches Programm werden sie gespeichert in? Wenn UTF-8 ist eine Option, das ist ein guter -. Teil, weil es mit dem gesamten Unicode zu bewältigen

Ich habe eine Artikel auf Unicode und eine andere auf Debuggen Unicode Probleme denen Sie nützlich sein können.

Andere Tipps

Der vorhandene code nicht jede Codierung

Es kann nicht explizit angegeben ist die Kodierung, in welchem Fall die Codierung wahrscheinlich standardmäßig auf Codierung.UTF8.

Der name Codierung.Standardmäßig kann der Eindruck entstehen, dass dies die Standard-Codierung verwendet, die von Klassen wie StreamReader, aber das ist nicht der Fall:Wie Jon Skeet darauf hingewiesen, Kodierung.Standardmäßig ist die Codierung, die dem Betriebssystem der aktuellen ANSI-Codepage.

Ich persönlich denke, das macht den Namen der Eigenschaft Encoding.Standard etwas irreführend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top