|
|
Veröffentlicht am 13.04.2018 16:11:20
|
|
|

Heute, als ich einen OpenFileDialog-OpenFileDialog erstellt habe, musste ich die offene Datei lesen und sie im RichTextBox im Formular anzeigen. Beim Anzeigen der Datei stellte sich jedoch heraus, dass die angezeigte chinesische Zeichenkette verzerrt war. Die wichtigsten Teile des Codes sind wie folgt:
Zuerst dachte ich auch, dass es ein Problem mit der Zeichenkodierung gibt, also habe ich beim Initialisieren von StreamReader die Zeichenkodierungsparameter hinzugefügt und es mehrmals hinzugefügt: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII. Ich habe alle möglichen Codierungsschemata ausprobiert, aber das Ergebnis war nicht gut.
Ursprünglich verwendete das Betriebssystem von Windows 2000 und später Unicode für die Dateiverarbeitung, also . Die Standard-Dateikodierung für .Net ist ebenfalls Unicode. Sofern nicht anders angegeben, ist die Standardkodierung von StreamReader Unicode, nicht die ANSI-Codepage des aktuellen Systems. Die meisten Dokumente werden jedoch weiterhin in ANSI-Codierung gespeichert, und der chinesische Text verwendet gb2312, was zu verzerrten chinesischen Zeichen führt, was bedeutet, dass das Codierungsformat beim Lesen des Textes angegeben werden muss.
Der Workaround lautet: System.Text.Encoding.Default teilt dem StreamReader die Codierung des aktuellen Betriebssystems mit.
|
Vorhergehend:.net/c# Xml, Json, Hessian, Protocol Buffers SerialisierungsvergleichNächster:.net/c# Verwende Costura.Fody, um die DLL in die EXE zu packen
|