.NET : StreamReader nicht erkannt ° - Zeichen
Ich versuche zu laufen, einen RegEx zu suchen, Grad-Zeichen (\u00B0|\u00BA Grad in-Zusatz zu suchen, die eine andere form von ' --> \u00B4). Ich lese Längen-und Breitengrad-Koordinaten wie diese: 12º30'23.256547"S
Das problem ist mit der Art, wie lese ich die Datei, wie kann ich manuell injizieren einer Zeichenfolge, wie unten angezeigt (format Breitengrad, Längengrad, Beschreibung):
const string myTestString = @"12º30'23.256547""S, 12º30'23.256547""W,, Irgendwo";
und meine regex-matching-wie erwartet - ich sehe auch die ° - Werte, wo, Wann verwende ich den streamreader, sehe ich eine � für alle nicht erkannten Zeichen (das ° - symbol enthalten, als eine jener nicht erkannte Zeichen)
Ich versucht habe:
var sr = new StreamReader(dlg.File.OpenRead(), Encoding.UTF8);
var sr = new StreamReader(dlg.File.OpenRead(), Encoding.Unicode);
var sr = new StreamReader(dlg.File.OpenRead(), Encoding.BigEndianUnicode);
zusätzlich zu den Standard-ASCII.
Entweder, wie ich die Datei Lesen, habe ich am Ende diese Zeichen. Jede Beratung wäre sehr dankbar!!
- Ich habe versucht, aber das hat nicht geholfen:
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie angeben, mit welchem encoding die Datei gespeichert wurde, und verwenden, wenn Sie es Lesen, mit Ihrem streamreader.
Wenn es erstellt mit einem normalen texteditor, ich vermute, dass die Standard-Codierung Windows-1252 oder ISO-8859-1.
Ist das Grad-symbol 0xBA in ISO-8859-1 und geht außerhalb des 7bit-ASCII-Tabelle. Ich weiß nicht, wie die Codierung.ASCII interpretiert.
Sonst könnte es einfacher sein, so stellen Sie sicher, speichern Sie die Datei als UTF-8, wenn Sie haben, die Möglichkeit.
Dem Grund, dass es funktioniert, wenn du definieren Sie die Zeichenfolge, die im code ist da .NET immer die Arbeit mit strings mit der internen Codierung (UCS-2?), also, was StreamReader tun ist, konvertieren Sie die bytes Lesen aus der Datei in die interne Codierung mit der Codierung, die Sie angeben, wenn Sie erstellen den StreamReader.
Haben Sie versucht, verschiedene Codierungen... aber vermutlich nicht die Recht ein. Sie sollten nicht nur zu raten Codierungen finden Sie heraus, welche Kodierung es ist wirklich verwenden, und verwenden Sie diese.
StreamReader
selbst ist absolut in Ordnung. Es kann sich mit jeder Codierung, die Sie es geben, aber es muss übereinstimmen, die die verwendete Codierung beim schreiben der Datei aus.Wo kommt die Datei her? Was hat es geschrieben aus?
Wenn es war geschrieben mit dem Editor, kann es gut sein, mit
Encoding.Default
, die die Systems Standard-Codierung (d.h. es variiert von Maschine zu Maschine). Wenn überhaupt möglich, zu ändern, was auch immer ist, erstellen Sie die Datei mit einem einzelnen standard-Kodierung - ich persönlich bin ein großer fan von UTF-8.