Berikut ini memberikan 4 solusi berbeda untuk karakter kacau, yang pada dasarnya mencakup berbagai situasi di mana karakter kacau muncul dalam pengembangan web.
Solusi kode kacau terutama diusulkan untuk lingkungan pengembangan java+mysql. Selama modifikasi yang sesuai dilakukan, solusi ini dapat digunakan untuk memecahkan masalah kode kacau di lingkungan bahasa yang berbeda.
1. Halaman JSP menampilkan karakter yang kacau
Halaman tampilan berikut (display.jsp) tampak kacau:
kode program
<html>
<kepala>
<title>Pemrosesan JSP dalam bahasa Cina</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<tubuh>
<%
out.print("Pemrosesan JSP Cina");
%>
</tubuh>
</html>
Untuk server WEB yang berbeda dan versi JDK yang berbeda, hasil pemrosesannya berbeda. Alasan: Metode pengkodean yang digunakan oleh server berbeda dan browser menampilkan hasil berbeda untuk karakter berbeda. Solusi: Tentukan metode pengkodean (gb2312) di halaman JSP, yaitu tambahkan: <%@ page contentType="text/html; charset=gb2312"%> ke baris pertama halaman untuk menghilangkan karakter yang kacau. Halaman selengkapnya adalah sebagai berikut:
<%@ halaman contentType="teks/html; charset=gb2312"%>
<html>
<kepala>
<title>Pemrosesan JSP dalam bahasa Cina</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<tubuh>
<%
out.print("Pemrosesan JSP Cina");
%>
</tubuh>
</html>
2. Karakter kacau muncul saat formulir diserahkan dalam bahasa Mandarin. Di bawah ini adalah halaman penyerahan (submit.jsp) dengan kode berikut:
Kode program
<html>
<kepala>
<title>Pemrosesan JSP dalam bahasa Cina</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<tubuh>
<form nama="form1" metode="posting" action="proses.jsp">
<div align="tengah">
<masukan tipe="teks" nama="nama">
<input type="kirim" nama="Kirim" value="Kirim">
</div>
</bentuk>
</tubuh>
</html>
Berikut kode halaman pemrosesan (process.jsp):
Kode program
<%@ halaman contentType="teks/html; charset=gb2312"%>
<html>
<kepala>
<title>Pemrosesan JSP dalam bahasa Cina</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<tubuh>
<%=request.getParameter("nama")%>
</tubuh>
</html>
Jika karakter bahasa Inggris yang dikirimkan di submit.jsp dapat ditampilkan dengan benar, jika karakter Cina yang dikirimkan akan muncul karakter yang kacau. Alasan: Browser menggunakan pengkodean UTF-8 secara default untuk mengirim permintaan, dan metode pengkodean UTF-8 dan GB2312 mewakili karakter secara berbeda, sehingga karakter tidak dapat dikenali. Solusi: Enkode permintaan secara seragam melalui request.seCharacterEncoding("gb2312") untuk mencapai tampilan normal bahasa Mandarin. Kode process.jsp yang dimodifikasi adalah sebagai berikut:
Kode program
<%@ halaman contentType="teks/html; charset=gb2312"%>
<%
permintaan.seCharacterEncoding("gb2312");
%>
<html>
<kepala>
<title>Pemrosesan JSP dalam bahasa Cina</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<tubuh>
<%=request.getParameter("nama")%>
</tubuh>
</html>
3. Koneksi database kacau.
Selama segala sesuatu yang melibatkan bahasa Mandarin kacau, solusinya adalah menambahkan useUnicode=true&characterEncoding=GBK ke URL database dari database dan semuanya akan baik-baik saja.
4. Tampilan database kacau
Di mysql4.1.0, karakter Cina yang kacau akan muncul dalam tipe varchar dan tipe teks. Untuk tipe varchar, mengaturnya sebagai atribut biner dapat menyelesaikan masalah Cina. Untuk tipe teks, kelas konversi pengkodean harus digunakan untuk menanganinya . Implementasinya adalah sebagai berikut:
Kode program
kelas publik Konversi {
/** Ubah kode ISO-8859-1 menjadi GB2312
*/
String statis publik ISOtoGB(String iso){
string gb;
mencoba{
if(iso.sama dengan("") || iso == null){
kembali "";
}
kalau tidak{
iso = iso.trim();
gb = String baru(iso.getBytes("ISO-8859-1"),"GB2312");
kembalikan gb;
}
}
tangkapan(Pengecualian e){
System.err.print("Kesalahan konversi pengkodean:"+e.getMessage());
kembali "";
}
}
}
Kompilasi ke dalam kelas, dan Anda dapat memanggil metode statis ISOtoGB() dari kelas Convert untuk mengonversi pengkodean.