I dag, da jeg lavede en Open File-dialog, OpenFileDialog, skulle jeg læse den åbne fil og vise den i RichTextBox i formularen. Men da filen blev vist, blev det konstateret, at den viste kinesiske streng var forvansket. De vigtigste dele af koden er som følger:
Først troede jeg også, at der var et problem med tegnkodningen, så da jeg initialiserede StreamReader, tilføjede jeg tegnkodningsparametrene til den, og tilføjede den flere gange, Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, jeg prøvede alle kodningsmetoder, der kunne tilføjes, men resultatet var ikke godt.
Oprindeligt brugte operativsystemet fra Windows 2000 og senere Unicode til filbehandling, så . Standardfilkodningen for .Net er også Unicode. Medmindre andet er angivet, er standardkodningen af StreamReader Unicode, ikke det nuværende systems ANSI-kodeside. Dog er de fleste dokumenter stadig lagret i ANSI-kodning, og kinesisk tekst bruger gb2312, hvilket forårsager kinesiske forvrængede tegn, hvilket betyder, at kodningsformatet skal specificeres, når teksten læses.
Løsningen er: System.Text.Encoding.Default fortæller StreamReader kodningen af det aktuelle operativsystem.
|