Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 20162|Antwort: 2

[Gelöst] StreamReader-Lösung für verzerrte Zeichen beim Lesen von Dateien

[Link kopieren]
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 Serialisierungsvergleich
Nächster:.net/c# Verwende Costura.Fody, um die DLL in die EXE zu packen
 Vermieter| Veröffentlicht am 13.04.2018 17:11:39 |
Dieser Beitrag wurde zuletzt von QWERTYU am 13.04.2018 um 17:18 bearbeitet

Wenn es immer noch nicht funktioniert, könnte der Server die Daten komprimiert haben; nehmen wir gzip als Beispiel, du musst die Daten zuerst dekomprimieren.

Veröffentlicht am 19.04.2018 13:31:02 |
Wenn der Webinhalt mit gzip komprimiert ist und der Inhalt ungestört ist, gibt es zwei Lösungen

Erste Lösung:

//
        Zusammenfassung:
        Besorge oder setze die Art der verwendeten Dekompression.
        //
        Rückgabeergebnisse:
        Ein T:System.Net.DecompressionMethods-Objekt, das die Art der verwendeten Dekompression angibt.
        //
        Anomalie:
        T:System.InvalidOperationException:
        Der aktuelle Zustand des Objekts erlaubt es nicht, diese Eigenschaft zu setzen.
        public DecompressionMethods AutomaticDecompression { get; Set; }
Die folgende Codezeile ist fertig, die Veränderungen sind sehr klein!!




Zweite Lösung:



Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com