Rumah > Artikel > hujung hadapan web > Bagaimana untuk menyelesaikan masalah aksara yang kacau dalam javascript
Dalam pembangunan web, watak bercelaru adalah masalah yang sangat biasa. Apabila kami memaparkan aksara bukan ASCII (seperti Cina, Jepun, Korea, dsb.) pada halaman web, aksara bercelaru sering muncul. Ini disebabkan terutamanya oleh masalah menukar antara pengekodan yang berbeza.
Dalam JavaScript, anda juga akan menemui aksara yang bercelaru. Apabila menggunakan AJAX untuk meminta data, menghuraikan data dan operasi lain, jika aksara bukan ASCII terlibat, anda perlu menghadapi masalah aksara bercelaru. Jadi, bagaimana untuk menyelesaikan masalah bercelaru dalam JavaScript?
1. Fahami pengekodan aksara
Sebelum membincangkan cara menyelesaikan masalah watak bercelaru, kita perlu memahami beberapa pengetahuan asas pengekodan aksara.
Kod ASCII ialah pengekodan aksara 7-bit, mengandungi 128 aksara. Ini termasuk 26 huruf besar, 26 huruf kecil, 10 nombor dan 33 aksara khas.
Kod Unikod ialah pengekodan yang boleh mewakili semua aksara di dunia, dan ia termasuk lebih daripada 1.1 juta aksara berbeza.
Pengekodan UTF-8 ialah kaedah pengekodan panjang berubah-ubah yang boleh mewakili mana-mana aksara dalam kod Unikod. Ia menggunakan 1 hingga 4 bait untuk mewakili setiap aksara, dan panjang bait tertentu ditentukan oleh nilai kod Unicode.
2. Kaedah untuk menyelesaikan masalah kod bercelaru
Terdapat banyak cara untuk menyelesaikan masalah kod bercelaru ini.
Dalam fail html, anda boleh menentukan kaedah pengekodan aksara dokumen dengan menetapkan atribut charset bagi tag. Contohnya, jika kita ingin menetapkan kaedah pengekodan dokumen kepada UTF-8, kita boleh menambah kod berikut dalam teg
<meta charset="UTF-8">
Dengan cara ini, apabila penyemak imbas menghuraikan dokumen itu, ia akan Nyahkod kandungan dalam dokumen menggunakan UTF-8 untuk mengelakkan aksara bercelaru.
Dalam JavaScript, kita boleh menggunakan empat fungsi encodeURI, encodeURIComponent, decodeURI dan decodeURIComponent untuk melaksanakan operasi pengekodan dan penyahkodan . Antaranya, fungsi encodeURI dan encodeURIComponent boleh menukar aksara tertentu ke dalam format pengekodan URI, dan decodeURI dan decodeURIComponent boleh menyahkod rentetan dalam format pengekodan URI kepada rentetan asal. Fungsi ini memastikan bahawa rentetan ditukar dalam pengekodan yang betul untuk mengelakkan aksara bercelaru.
Apabila meminta data menggunakan AJAX, kami boleh menentukan jenis data yang diminta dan kaedah pengekodan dengan menetapkan Jenis Kandungan pengepala. Contohnya, jika kami ingin menghantar data dalam pengekodan UTF-8, kami boleh menetapkan pengepala Jenis Kandungan berikut semasa menghantar permintaan:
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
Dengan cara ini, apabila pelayan menerima permintaan, ia akan mengekodnya dalam UTF-8 Kaedah pengekodan menghuraikan data permintaan untuk mengelakkan aksara bercelaru.
Dalam JavaScript, kami boleh menggunakan objek Blob untuk menjana data binari dan menyimpannya sebagai fail untuk dimuat turun. Apabila menjana objek Blob, anda boleh menentukan kaedah pengekodan data untuk memastikan data dalam fail disimpan dalam kaedah pengekodan yang betul untuk mengelakkan aksara bercelaru. Sebagai contoh, jika kita ingin menjana objek Blob dalam pengekodan UTF-8, kita boleh menggunakan kod berikut:
const blob = new Blob([data], { type: 'text/csv; charset=UTF-8' });
dalam JavaScript Apabila menggunakan objek XMLHttpRequest untuk meminta data XML, anda boleh menetapkan atribut responseType kepada "teks" untuk memastikan data XML dihuraikan mengikut kaedah pengekodan yang betul untuk mengelakkan aksara bercelaru. Sebagai contoh, kita boleh menetapkan atribut responseType bagi objek XMLHttpRequest menggunakan kod berikut:
const xhr = new XMLHttpRequest(); xhr.responseType = 'text'; xhr.open('GET', url); xhr.send();
Begitu juga, menggunakan Objek XMLHttpRequest dalam JavaScript Apabila meminta data JSON, anda juga boleh menetapkan atribut responseType kepada "teks" untuk memastikan bahawa data JSON dihuraikan mengikut kaedah pengekodan yang betul untuk mengelakkan aksara bercelaru. Sebagai contoh, kita boleh menggunakan kod berikut untuk menetapkan atribut responseType bagi objek XMLHttpRequest:
const xhr = new XMLHttpRequest(); xhr.responseType = 'text'; xhr.open('GET', url); xhr.send(); // 解析JSON数据 xhr.onload = function () { const data = JSON.parse(xhr.responseText); // ... };
3. Ringkasan
Masalah kod bercelaru adalah masalah biasa dalam pembangunan Web, dan ia juga merupakan masalah yang agak menyusahkan. Dalam JavaScript, kita boleh menetapkan kaedah pengekodan fail html, menukar rentetan kepada kaedah pengekodan yang betul, menetapkan pengepala Jenis Kandungan permintaan AJAX, menggunakan objek Blob untuk memuat turun fail dan menggunakan atribut teks untuk menghuraikan data XML dan JSON, dsb. . kaedah untuk menyelesaikan masalah watak bercelaru. Pada masa yang sama, kita juga perlu memahami beberapa pengetahuan pengekodan aksara biasa untuk lebih memahami sifat masalah kod bercelaru.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara yang kacau dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!