Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 20162|Odpoveď: 2

[Vyriešené] Riešenie pre StreamReader pre nesprávne znaky pri čítaní súborov

[Kopírovať odkaz]
Zverejnené 13. 4. 2018 16:11:20 | | |
Dnes, keď som vytváral dialógové okno Open File OpenFileDialog, potreboval som prečítať otvorený súbor a zobraziť ho vo formulári RichTextBox. Pri zobrazovaní súboru sa však zistilo, že zobrazený čínsky reťazec je skreslený. Kľúčové časti kódu sú nasledovné:
Najprv som si tiež myslel, že je problém s kódovaním znakov, takže keď som inicializoval StreamReader, pridal som doň parametre kódovania znakov a pridal ich niekoľkokrát, Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, vyskúšal som všetky kódovacie schémy, ktoré sa dali pridať, ale výsledok nebol dobrý.


Pôvodne operačný systém z Windows 2000 a neskôr používal Unicode na spracovanie súborov, takže . Predvolené kódovanie súborov pre .Net je tiež Unicode. Ak nie je uvedené inak, predvolené kódovanie StreamReaderu je Unicode, nie aktuálna ANSI kódová stránka systému. Väčšina dokumentov je však stále uložená v ANSI kódovaní a čínsky text používa gb2312, čo spôsobuje zmätené čínske znaky, čo znamená, že pri čítaní textu musí byť zadaný formát kódovania.


Obchádzka je: System.Text.Encoding.Default informuje StreamReader o kódovaní aktuálneho operačného systému.






Predchádzajúci:.net/c# Xml, Json, Hessian, porovnanie serializácie protokolových bufferov
Budúci:.net/c# Použite Costura.Fody na zabalenie DLL do EXE
 Prenajímateľ| Zverejnené 13. 4. 2018 17:11:39 |
Tento príspevok naposledy upravil QWERTYU 13. 4. 2018 o 17:18

Ak to stále nefunguje, server mohol dáta komprimovať, napríklad gzip, najprv je potrebné dáta dekomprimovať.

Zverejnené 19. 4. 2018 13:31:02 |
Ak je webový obsah komprimovaný pomocou gzip a obsah je skreslený, existujú dve riešenia

Prvé riešenie:

//
        Súhrn:
        Zistite alebo nastavte typ dekompresie, ktorý sa používa.
        //
        Výsledky návratu:
        Objekt T:System.Net.DecompressionMethods, ktorý určuje typ použitej dekompresie.
        //
        Anomália:
        T:System.InvalidOperationException:
        Aktuálny stav objektu neumožňuje nastaviť túto vlastnosť.
        public DecompressionMethods AutomaticDecompression { get; set; }
Nasledujúci riadok kódu je hotový, zmeny sú veľmi malé!!




Druhé riešenie:



Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com