Dans le système sur lequel je travaillais récemment, j'ai rencontré un problème. Le système commercial utilise le codage UTF-8, tandis que certains systèmes de support utilisent le codage GB2312.
Si des pages et des scripts avec des encodages différents se référencent, des caractères tronqués apparaîtront. La solution consiste à les unifier en un seul encodage.
Dans asp.net, si vous souhaitez modifier l'encodage de la page de sortie, vous pouvez modifier les informations de configuration suivantes dans web.config
<globalisation requestEncoding="utf-8" réponseEncoding="utf-8" />
Ce qui précède sert simplement à modifier l'encodage global par défaut. Si seul l'encodage d'une certaine page doit être modifié, vous pouvez simplement utiliser le code suivant dans ASP.net :
Remarque : ajoutez-le simplement sous l'événement Page_Load().
Encodage gb2312 = Encoding.GetEncoding("gb2312");
Réponse.ContentEncoding = gb2312 ;
Dans les applications non-ASP.net, les données que vous pouvez lire sont codées en UTF-8, mais si vous souhaitez les convertir en codage GB2312, vous pouvez vous référer au code suivant :
string utfinfo = "document.write("alert('Comment vas-tu ??');");";
chaîne gb2312info = chaîne.Empty ;
Encodage utf8 = Encodage.UTF8 ;
Encoding gb2312 = Encoding.GetEncoding("gb2312");
// Convertit la chaîne en octet[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Effectue la conversion d'un encodage à l'autre.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// Convertit le nouvel octet[] en char[] puis en chaîne.
// Il s'agit d'une approche légèrement différente de la conversion pour illustrer
// l'utilisation de GetCharCount/GetChars.
char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
Bien entendu, la conversion entre divers autres encodages est similaire au code ci-dessus et ne sera pas décrite.