Frage

Ich habe ein Programm, das Text eingibt und mithilfe einer Reihe von Funktionen sortiert, und der Text sollte unabhängig vom Format lesbar sein. Wenn jedoch eine Datei, die auf der erweiterten ASCII -Codierung gespeichert ist, importiert wird, werden alle Zeichen über 127 ignoriert. Wenn ich mich umsehe, kann ich nicht sehen, wie ich das überwinden kann. Die Dateien werden in UTF-8 und Unicode gut gelesen. Ich habe versucht, die Saiten in UTF-8 umzuwandeln, aber die fraglichen Briefe werden stattdessen immer noch als Fragenmarke wie Formen aufgetaucht. Ich kann sehen, dass die Werte korrekt sind: 0xBF für û, aber sie werden nicht als Wert interpretiert.

Kann mir hier jemand helfen, ich habe noch nicht viel mit so etwas gearbeitet. Ich arbeite in C#, wenn das hilft.

Mein aktueller Code für die Konvertierung sieht folgt aus:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);

Wo sd ist die Zeichenfolge. Wenn ich diese Zeichenfolge importiere, gib ich die Textcodierung nicht an:

string input = File.ReadAllText(fname);
...
parser(input);
War es hilfreich?

Lösung

Ich kann sehen, dass die Werte korrekt sind: 0xBF für û

Das ist nicht die UTF-8-Codierung für û, das wäre eine zwei Byte-Sequenz, 0xc3 + 0xBB. Offensichtlich haben Sie die Dateikodierung falsch erraten. Die Codierung dieses Zeichens in Windows Code Seite 1252, die in Westeuropa und Amerika üblich ist, beträgt 0xFB. Auch in Großbritannien, Ihr Wohnsitzland. Hast du die Ziffern umgekehrt?

Verwenden Sie stattdessen Coding.default.

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