|
|
Opublikowano 13.04.2018 16:11:20
|
|
|

Dziś, gdy tworzyłem okno otwierania pliku OpenFileDialog, musiałem przeczytać otwarty plik i wyświetlić go w formularzu RichTextBox. Jednak podczas wyświetlania pliku okazało się, że wyświetlany chiński ciąg był zniekształcony. Kluczowe elementy kodeksu to:
Na początku myślałem też, że jest problem z kodowaniem znaków, więc gdy inicjowałem StreamReader, dodałem do niego parametry kodowania znaków i dodawałem je kilka razy: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, próbowałem wszystkich możliwych schematów kodowania, ale efekt nie był dobry.
Początkowo system operacyjny z Windows 2000 i późniejszych używał Unicode do przetwarzania plików, więc . Domyślne kodowanie plików .Net to również Unicode. O ile nie zakreślono inaczej, domyślne kodowanie StreamReader to Unicode, a nie obecna strona kodowa ANSI w obecnym systemie. Jednak większość dokumentów nadal jest przechowywana w kodowaniu ANSI, a tekst chiński używa gb2312, co powoduje zniekształcone znaki chińskie, co oznacza, że format kodowania musi być określony podczas czytania tekstu.
Obejście to: System.Text.Encoding.Default informuje StreamReader o kodowaniu aktualnego systemu operacyjnego.
|
Poprzedni:.net/c# Xml, Json, Hessian, porównanie serializacji protokołuNastępny:.net/c# Użyj Costura.Fody do pakowania DLL do pliku EXE
|