|
|
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 bufferovBudúci:.net/c# Použite Costura.Fody na zabalenie DLL do EXE
|