Masalah kode kacau Cina benar -benar masalah yang sangat sulit, terutama setelah dikirim dari meja depan ke meja belakang, saya tidak tahu di mana letak masalahnya. Sekarang kami berbagi 3 cara untuk menyelesaikan masalah kantor Cina yang kacau di kantor depan dan belakang di Javaweb.
Metode 1:
Pengkodean Tomcat sendiri adalah dalam format ISO-8859-1 dan tidak sesuai dengan pengkodean Cina. Jadi kita harus memperhatikan saat menerima dari latar belakang.
Gunakan format yang sama untuk menerima (ISO-8859-1), dan kemudian konversinya dengan pengkodean parsable (UTF-8). Dengan cara ini, kita bisa mendapatkan format yang kompatibel dengan Cina. Setelah pemrosesan ini, kirim ke meja depan. Catatan: Anda perlu mengaturnya saat mengirim ke latar depan
resp.setContentType ("Teks/html; charset = utf-8"); // Atur pengkodean karakter halaman untuk menyelesaikan masalah teks Cina yang kacau pada antarmuka.
Layanan void yang dilindungi (httpservletrequest req, httpservletresponse resp) melempar servletException, ioException {// karena tomcat dilengkapi dengan format iso-8859-1 pengkodean
// Salah satu metode untuk menyelesaikan kode kacau <span style = "White-space: pre"> </span> name string = req.getParameter ("nama pengguna"); </span> string pwd = req.getParameter ("pwd"); // Gunakan format Tomcat (ISO-8859-1) digunakan untuk membaca. <span style = "white-space: pre"> </span> string str = new string (b, "UTF-8"); // Gunakan UTF-8 untuk menghubungkan string <span style = "White-Space: Pre "> </span> resp.setContentType (" text/html; charset = utf-8 "); // Atur pengkodean karakter halaman <span style =" White-space: pre "> </span>
<span style = "White-space: pre"> </span> printwriter pw = resp.getWriter () > <font size = '5px' color = 'red'> nama pengguna: "+nama+" pwd: "+pwd+" </font> </body> </html> "; <span style =" White-space: pre "> </span> pw.print (str1); printwriter pw = resp.getWriter (); string str1 =" <html> <body> <font size = '5px' color = 'red'> nama pengguna: "+nama +"pwd:"+pwd+"</font> </body> </html>";
Metode 2:
Karena metode ini rumit, pengaturan sederhana digunakan. Hanya kalimat sederhana
req.setcharacterencoding ("UTF-8"); // Itu harus ditulis di tempat pertama karena metode ini digunakan untuk membaca data, jika tidak data akan salah.
Dengan cara ini, tidak perlu diatur sama rumitnya seperti sebelumnya
Layanan void yang dilindungi (httpservletrequest req, httpservletresponse resp) melempar servletException, ioException {// karena tomcat hadir dengan pengkodean adalah format ISO-8859-1 // memecahkan dua "metode" yang lebih rumit》 req.setcharactersoding ("Metode yang lebih rumit. "); // Itu harus ditulis di tempat pertama karena metode ini digunakan untuk membaca data, jika tidak data akan salah. // Tetapkan cara membaca ini. Dengan cara ini, bahasa Cina dapat dibaca, tetapi perhatian diperlukan. Formulir harus dikirim oleh <span style = "Color:#ff0000;"> Method = 'Post' </span> resp.setContentType ("Teks/html; charset = utf-8"); // Setel lulus Pengkodean yang ditampilkan pada nama string halaman = req.getParameter ("nama pengguna"); font size = '5px' color = 'red'> nama pengguna: "+nama+" pwd: "+pwd+" </font> </body> </html> "; pw.print (str1);
Metode 3:
Ini dimodifikasi berdasarkan dua dharma. Meskipun kami dapat memodifikasi format pengkodean untuk dibaca, mengingat bahwa pengguna pasti tidak akan memodifikasinya, kami perlu mengadopsi metode yang lebih umum untuk membiarkan pengguna memodifikasi file konfigurasi. Artinya, file web.xml perlu memodifikasi konten di web.xml, yaitu, pengkodean karakter diterima dari XML. Membutuhkan parameter konfigurasi dalam file XML.
Kodenya adalah sebagai berikut:
<servlet> <servlet-name> Encodeing </servlet-name> <servlet-class> cn.hncu.com.encode.encodeing </servlet-class> <Ilin-param> <param-name> Charset </anya m -Name> <Param-Value> UTF-8 </param-value> // Isi di sini dapat diisi oleh pengguna (harus dalam format pengkodean) </init-param> </servlet>
Kita tahu bahwa pertukaran antara latar depan dan latar belakang harus dilakukan melalui konfigurasi Web.xml.
public void init (servletconfig config) melempar servletException {charset = config.getInitparameter ("charset"); // Dapatkan parameter inisialisasi. Tentu saja, Charset perlu ditetapkan sebagai variabel global. Fungsi layanan selanjutnya perlu ditetapkan req.setcharacterencoding (charset);
req.setchActerencoding (charset); pw = resp.getWriter (); > </html> "; pw.print (str1);
Rendering terselesaikan:
Sebelum menyelesaikan:
Setelah resolusi:
Kode meja depan:
<body> <Form Action = "Login" Method = "Post"> // Login dikonfigurasi dalam web.xml, dan nama pengguna data dapat dibaca di latar belakang: <input type = "text" name = "username "/> <br/> Kata sandi: <input type =" password "name =" pwd "/> <br/> <input type =" kirim "value =" login "/> </form> </body>
Di atas adalah tiga cara untuk memecahkan masalah Cina yang kacau di kantor depan dan belakang di Javaweb, terutama masalah Cina yang kacau dalam bahasa Cina setelah ditransmisikan dari meja depan ke backend.