Dua metode yang umum digunakan untuk menyelesaikan karakter kacau AJAX Cina
1. EncodeURI di sisi klien (utf-8 juga dapat dihilangkan, default), dan ubah pengkodean iso-8859-1 menjadi pengkodean utf-8 di sisi server
2. EncodeURI dilakukan dua kali di sisi klien dan dikonversi satu kali di sisi server.
Alasan mengapa cara kedua dapat menyelesaikan masalah:
Setelah dua konversi, lakukan decoding pertama pada metode getparameter pertama. Karena solusinya dalam bahasa Inggris (hasil setelah encode pertama), tidak akan ada masalah; kedua kalinya, gunakan metode decode URLDecoder, Jadi masalah ini bisa diselesaikan secara normal. Perlu dicatat bahwa format decoding perlu ditentukan sebagai "utf-8" dalam metode decode. Banyak platform China tidak menggunakan utf-8 (saya kira itu gb2312), jadi konversi decode default belum tentu utf-8.
Alasan mengapa klien dikodekan dua kali dan didekodekan hanya sekali di server adalah karena Tomcat. Untuk membuat pemrograman nyaman bagi pemrogram (dapatkan dan posting menggunakan kode yang sama), Tomcat akan secara otomatis mendekode pengkodean posting, sehingga ada satu pernyataan decoding tulisan tangan yang lebih sedikit di sisi server. Alasan mengapa kita perlu melakukan pengkodean dan decoding lagi adalah karena operasi decoding otomatis Tomcat belum tentu didekodekan sesuai dengan pengkodean yang kita inginkan, tetapi kode yang didekodekan untuk bahasa Inggris dan karakter lainnya tetap sama tidak peduli di platform mana mereka berada, sehingga Tomcat dapat secara otomatis menafsirkan hasil pengkodean pertama, dan kemudian secara manual menafsirkan kode encodeURI satu kali untuk mendapatkan format yang Anda butuhkan.
Tambahan: Sekarang saya telah mengamati perilaku browser lagi, dan menurut saya itu bukan kesalahan Tomcat, karena browser menampilkan bahasa Mandarin alih-alih konten yang disandikan. Saat ini saya bingung tentang masalah pengkodean ini. Teman-teman yang memiliki pengetahuan di bidang ini dipersilakan memberi saya saran!
Selesaikan masalah cache IE
Tambahkan stempel waktu dan ingin memeriksanya?
Memecahkan masalah agensi
Ingin? Konversikan ke $
Contoh kode:
Copy kode kodenya sebagai berikut:
fungsi verifikasi() {
//Metode 1 untuk memecahkan masalah karakter Cina yang kacau. Data yang dikirim dari sisi halaman dikodekan sebagai encodeURI, dan segmen server menggunakan new String(old.getBytes("iso8859-1"),"UTF-8" );
//Metode 2 untuk menyelesaikan masalah Cina yang kacau, data yang dikirim dari sisi halaman dikodekan dua kali, dan segmen server menggunakan URLDecoder.decode(old, "UTF-8")
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#namapengguna").val()));
url = convertURL(url);
$.mendapatkan(url,null,fungsi(data){
$("#hasil").html(data);
});
}
//Tambahkan stempel waktu ke alamat url untuk menipu browser dan tidak membaca cache
fungsi convertURL(url) {
//Dapatkan stempel waktu
var cap waktu = (Tanggal baru()).valueOf();
//Gabungkan informasi stempel waktu ke dalam url
//url = "AJAXServer"
if (url.indexOf("?") >= 0) {
url = url + "&t=" + stempel waktu;
} kalau tidak {
url = url + "?t=" + stempel waktu;
}
kembalikan url;
}