Pada sistem yang saya kerjakan baru-baru ini, saya mengalami masalah. Sistem perdagangan menggunakan pengkodean UTF-8, sementara beberapa sistem pendukung menggunakan pengkodean GB2312.
Jika halaman dan skrip dengan pengkodean berbeda saling merujuk, karakter kacau akan terjadi. Solusinya adalah dengan menyatukannya menjadi satu pengkodean.
Di asp.net, jika Anda ingin mengubah pengkodean halaman keluaran, Anda dapat mengubah informasi konfigurasi berikut di web.config
<permintaan globalisasiEncoding="utf-8" responEncoding="utf-8" />
Hal di atas hanya untuk mengubah keseluruhan pengkodean default. Jika hanya pengkodean halaman tertentu yang perlu diubah, Anda cukup menggunakan kode berikut di ASP.net:
Catatan: Tambahkan saja di bawah acara Page_Load().
Pengkodean gb2312 = Pengkodean.GetEncoding("gb2312");
Respon.ContentEncoding = gb2312;
Dalam aplikasi non-ASP.net, data yang mungkin Anda baca dikodekan UTF-8, tetapi jika Anda ingin mengonversinya ke pengkodean GB2312, Anda dapat merujuk ke kode berikut:
string utfinfo = "document.write("alert('Apa kabar??');");";
string gb2312info = string.Kosong;
Pengkodean utf8 = Pengkodean.UTF8;
Pengkodean gb2312 = Pengkodean.GetEncoding("gb2312");
// Ubah string menjadi byte[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Melakukan konversi dari satu pengkodean ke pengkodean lainnya.
byte[] asciiBytes = Pengkodean.Konversi(utf8, gb2312, unicodeBytes);
// Ubah byte[] baru menjadi char[] lalu menjadi string.
// Ini adalah pendekatan yang sedikit berbeda dalam mengkonversi untuk mengilustrasikan
// penggunaan GetCharCount/GetChars.
char[] asciiChars = char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)] baru;
gb2312.GetChars(asciiBytes, 0, asciiBytes.Panjangnya, asciiChars, 0);
gb2312info = new string(asciiChars);
Tentu saja, konversi antara berbagai pengkodean lainnya mirip dengan kode di atas dan tidak akan dijelaskan.