Rumah >hujung hadapan web >tutorial js >Penyelesaian kepada masalah aksara Cina bercelaru dalam kaedah Pos Ajax_jquery JQuery
Contoh dalam artikel ini menerangkan penyelesaian kepada masalah penghantaran Pos Cina dalam JQuery, iaitu kaedah pemprosesan bercelaru ajax dan jquery.ajax parameter Cina pasca penghantaran. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
Soalan 1:
Semasa saya menjalankan projek hari ini, saya perlu menggunakan Ajax Apabila saya menggunakan GET untuk lulus parameter Cina, saya hanya perlu menetapkan pengekodan halaman kepada GB2312 dalam program latar belakang supaya bahasa Cina boleh dipaparkan secara normal , kali ini disebabkan bilangan item borang yang banyak , ia tidak sesuai untuk dihantar melalui kaedah GET, dan hanya boleh dihantar melalui kaedah POST Walau bagaimanapun, saya mendapati bahawa apabila pengekodan ditetapkan kepada GB2312 dalam program latar belakang, bahasa Cina aksara masih dipaparkan sebagai aksara bercelaru. Selepas beberapa penyelidikan akhirnya masalah itu diselesaikan.
Penyelesaian:
Kaedah untuk menyelesaikan masalah ini sangat mudah Anda hanya perlu menggunakan fungsi escape() semasa memproses parameter dalam JS, dan tidak perlu menggunakan unescape() untuk menyahkod kaedah. Kod Ajax khusus Saya tidak akan memberikan contoh di sini, tetapi berikut ialah kod untuk menggunakan fungsi escape() untuk memproses parameter:
Biasanya apabila kami memproses Ajax, kami akan mendapatkan nilai parameter secara langsung di sini Untuk menjadikan parameter Cina tidak kacau, kami hanya perlu menggunakan fungsi escape() untuk memproses parameter.
Soalan 2:
Apabila halaman tapak web tidak dikodkan utf-8, bahasa Cina yang dihantar oleh ajax akan menjadi kacau.
Penyelesaian adalah seperti berikut:
Cari contentType:application/x-www-form-urlencoded dalam jquery.js dan tukarkannya kepada contentType:application/x-www-form-urlencoded;
Punca: Apabila charset tidak dinyatakan, jquery menggunakan ISO-8859-1, ISO8859-1, biasanya dipanggil Latin-1. Latin-1 termasuk aksara tambahan yang sangat diperlukan untuk menulis semua bahasa Eropah Barat. Ajax jquery tidak mengambil kira isu pengantarabangsaan sama sekali, tetapi menggunakan set aksara Eropah, jadi aksara yang bercelaru akan muncul apabila menghantar bahasa Cina
Saya telah lama menggunakan rangka kerja Prototaip. Saya telah menggunakannya di bawah .net-GB2312 atau jsp tutorial-utf8, dan saya tidak pernah menghadapi sebarang masalah pengekodan aksara. Jadi saya memuat turun kedua-dua kod Prototaip dan JQuery dan membukanya untuk mengkaji sebab-sebabnya.
Perbezaannya ialah kandungan lalai JQueryType: application/x-www-form-urlencoded
Prototaip ialah contentType:application/x-www-form-urlencoded; charset=UTF-8
Inilah sebab mengapa JQuery bercelaru Apabila set aksara tidak dinyatakan, ISO-8859-1 digunakan
ISO8859-1, biasanya dipanggil Latin-1. Latin-1 termasuk aksara tambahan yang sangat diperlukan untuk menulis semua bahasa Eropah Barat.
Ajax JQuery tidak mempertimbangkan sama sekali isu pengantarabangsaan dan menggunakan set aksara Eropah, yang menyebabkan masalah aksara bercelaru semasa menghantar bahasa Cina.
UTF-8 kami boleh menyelesaikan masalah ini.
Akhirnya, ini bermakna anda perlu mengubah suai kod JQuery dan mengisytiharkan secara jelas bahawa contentType menggunakan set aksara utf-8, yang boleh menyelesaikan masalah penghantaran Cina GB2312.
Anda hanya perlu mengubah suai kod JQuery dan menambah charset=UTF-8 Dengan cara ini, tidak perlu menukar web.config atau menukar pengekodan pada halaman, dan tidak perlu menggunakan escapc. (str) kemudiannya dinyahkod pada bahagian pelayan. Bagaimana ia disampaikan dalam bahasa Inggeris juga disampaikan dalam bahasa Cina.
Berikut ialah kod mudah untuk diuji:
kod halaman test.html:
Da außerdem die standardmäßige chinesische Zeichenkodierung von Ajax utf-8 ist, ist es sicherer, sicherzustellen, dass das einheitliche Kodierungsformat der beteiligten Seiten utf-8 ist.
Ich hoffe, dass dieser Artikel für alle bei der Ajax-Programmierung auf Basis von jQuery hilfreich sein wird.