Aujourd’hui, lorsque je créais une boîte de dialogue Open File OpenFileDialog, j’ai dû lire le fichier ouvert et l’afficher dans la RichTextBox du formulaire. Cependant, lors de l’affichage du fichier, il a été constaté que la chaîne chinoise affichée était brouillée. Les parties clés du code sont les suivantes :
Au début, j’ai aussi pensé qu’il y avait un problème avec le codage des caractères, alors quand j’ai initialisé StreamReader, j’y ai ajouté les paramètres d’encodage des caractères, et je les ai ajoutés plusieurs fois : Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, j’ai essayé tous les schémas d’encodage possibles, mais le résultat n’était pas bon.
À l’origine, le système d’exploitation de Windows 2000 et plus tard utilisait Unicode pour le traitement des fichiers, donc . Le codage de fichiers par défaut pour .Net est aussi Unicode. Sauf indication contraire, l’encodage par défaut de StreamReader est Unicode, et non la page de codes ANSI du système actuel. Cependant, la plupart des documents sont encore stockés en codage ANSI, et le texte chinois utilise gb2312, ce qui provoque des caractères brouillés chinois, ce qui signifie que le format d’encodage doit être spécifié lors de la lecture du texte.
La solution de contournement est la suivante : System.Text.Encoding.Default indique au StreamReader l’encodage du système d’exploitation actuel.
|