|
|
Postat pe 13.04.2018 16:11:20
|
|
|

Astăzi, când am creat un dialog Open File OpenFileDialog, a trebuit să citesc fișierul deschis și să-l afișez în RichTextBox din formular. Totuși, la afișarea fișierului, s-a constatat că șirul chinezesc afișat era distorsionat. Părțile cheie ale codului sunt următoarele:
La început, am crezut că există o problemă cu codificarea caracterelor, așa că atunci când am inițializat StreamReader, am adăugat parametrii de codare a caracterelor și i-am adăugat de mai multe ori: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, am încercat toate schemele de codare care puteau fi adăugate, dar rezultatul nu a fost bun.
Inițial, sistemul de operare din Windows 2000 și ulterior folosea Unicode pentru procesarea fișierelor, deci . Codificarea implicită a fișierelor pentru .Net este tot Unicode. Dacă nu se specifică altfel, codificarea implicită a StreamReader este Unicode, nu pagina de cod ANSI a sistemului curent. Totuși, majoritatea documentelor sunt încă stocate în codare ANSI, iar textul chinezesc folosește gb2312, ceea ce cauzează caractere chinezești distorsionate, ceea ce înseamnă că formatul de codare trebuie specificat la citirea textului.
Soluția este: System.Text.Encoding.Default îi spune StreamReader codarea sistemului de operare curent.
|
Precedent:.net/c# Comparație de serializare XML, Json, Hessian, Protocol BuffersUrmător:.net/c# Folosește Costura.Fody pentru a împacheta DLL-ul în EXE
|