In dem System, an dem ich kürzlich gearbeitet habe, ist ein Problem aufgetreten. Das Handelssystem verwendet die UTF-8-Kodierung, während einige unterstützende Systeme die GB2312-Kodierung verwenden.
Wenn Seiten und Skripte mit unterschiedlichen Kodierungen aufeinander verweisen, treten verstümmelte Zeichen auf. Die Lösung besteht darin, sie in einer Kodierung zu vereinen.
Wenn Sie in asp.net die Codierung der Ausgabeseite ändern möchten, können Sie die folgenden Konfigurationsinformationen in web.config ändern
<Globalisierung requestEncoding="utf-8" ResponseEncoding="utf-8" />
Das Obige dient nur dazu, die allgemeine Standardkodierung zu ändern. Wenn nur die Kodierung einer bestimmten Seite geändert werden muss, können Sie einfach den folgenden Code in ASP.net verwenden:
Hinweis: Fügen Sie es einfach unter dem Page_Load()-Ereignis hinzu.
Encoding gb2312 = Encoding.GetEncoding("gb2312");
Response.ContentEncoding = gb2312;
In Nicht-ASP.net-Anwendungen sind die Daten, die Sie möglicherweise lesen, UTF-8-codiert. Wenn Sie sie jedoch in GB2312-Codierung konvertieren möchten, können Sie auf den folgenden Code zurückgreifen:
string utfinfo = "document.write("alert('How are you??');");";
string gb2312info = string.Empty;
Encoding utf8 = Encoding.UTF8;
Encoding gb2312 = Encoding.GetEncoding("gb2312");
// Konvertieren Sie den String in ein Byte[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Führen Sie die Konvertierung von einer Kodierung in die andere durch.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// Konvertieren Sie das neue Byte[] in ein char[] und dann in einen String.
// Dies ist zur Veranschaulichung ein etwas anderer Ansatz zur Konvertierung
// die Verwendung von GetCharCount/GetChars.
char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
Die Konvertierung zwischen verschiedenen anderen Codierungen ähnelt natürlich dem obigen Code und wird nicht beschrieben.