Rumah > Artikel > hujung hadapan web > Penyelesaian kepada aksara bercelaru dalam pengekodan melarikan diri dan nyahkod kemahiran aksara Cina_javascript
Dalam projek hari ini, kami menghadapi situasi di mana kami perlu menggunakan pelarian JavaScript untuk mengekod aksara Cina dan kemudian menggunakan unescape untuk menyahkodnya Apabila menguji segmen kod, aksara bercelaru muncul.
Situasi khusus adalah seperti berikut:
Mula-mula, gunakan EditPlus untuk membuka halaman ujian test.html dan edit kod html berikut:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>unescape测试</title> </head> <body> <script> var teststr=escape("脚本之家"); document.write(teststr); </script> </body> </html>
Cetakan halaman:
%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD
Anda boleh melihat bahawa ada sesuatu yang tidak kena pada ketika ini Hanya daripada bilangan aksara yang sepadan dengan aksara Cina, ia sudah salah!
Kemudian gunakan kod berikut untuk menguji aksara Cina yang dinyahkod oleh unescape:
var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD"); document.write(relstr);
Watak bercelaru muncul: �ű�֮��
Penyelesaian:
Buka fail test.html dengan Dreamweaver dan temui masalahnya!
Perenggan asal
var teststr=escape("脚本之家");
menjadi
var teststr=escape("ű֮");
Ia boleh dilihat bahawa ia disebabkan oleh pengekodan awal editor!
Tukar aksara Cina kembali dalam Dreamweaver, jalankan semula test.html dan dapatkan pengekodan yang sepadan:
%u811A%u672C%u4E4B%u5BB6
Pada masa ini, gunakan unescape untuk menyahkod:
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6"); document.write(relstr);
Kami mendapat aksara Cina asal yang betul: Rumah Skrip!