Rumah > Artikel > hujung hadapan web > rentetan javascript ke uxxxx
Unicode ialah salah satu piawaian untuk pengekodan aksara dalam sains komputer Ia mentakrifkan cara mewakili aksara secara berangka. Dalam Unicode, setiap aksara mempunyai nombor yang sepadan. Nombor ini dipanggil titik kod Unicode, dan ia biasanya dinyatakan dalam perenambelasan.
Dalam JavaScript, apabila kami perlu menggunakan titik kod Unicode untuk mewakili beberapa aksara khas, kami biasanya menyatakannya dalam bentuk uXXXX
. Antaranya, XXXX ialah nombor perenambelasan 4 digit, mewakili titik kod Unicode bagi aksara yang sepadan.
Jika kami mempunyai rentetan yang mengandungi beberapa aksara khas, kami boleh menukar aksara ini kepada titik kod Unicode yang sepadan. JavaScript menyediakan beberapa kaedah terbina dalam untuk menyelesaikan tugas ini.
String.charCodeAt() boleh mengembalikan titik kod Unicode aksara pada kedudukan yang ditentukan dalam rentetan. Sebagai contoh:
let str = "hello world"; console.log(str.charCodeAt(0)); // 104,h 的 Unicode 码点是 104
Kita boleh menggunakan gelung untuk mengulangi keseluruhan rentetan dan menukar titik kod Unikod bagi setiap aksara ke dalam bentuk uXXXX
. Contohnya:
let str = "hello world"; let unicodeStr = ""; for (let i = 0; i < str.length; i++) { // 将每一个字符的 Unicode 码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + str.charCodeAt(i).toString(16)).slice(-4); } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020u0077u006fu0072u006cu0064
Kaedah String.codePointAt() boleh mengembalikan titik kod Unicode aksara pada kedudukan yang ditentukan dalam rentetan, yang berbeza daripada String.charCodeAt() Ya, ia mengendalikan mata kod Unicode yang lebih besar daripada 16 bit dengan betul. Contohnya:
let str = "?"; console.log(str.charCodeAt(0)); // 55362,这个码点需要使用 2 个 16 进制数表示,而 charCodeAt() 返回的是第一个 16 进制数的码点 console.log(str.codePointAt(0)); // 134071,codePointAt() 返回整个码点
Gunakan kaedah String.codePointAt() untuk menukar semua aksara dalam rentetan kepada titik kod Unicode Anda boleh melintasi dengan cara yang sama seperti di atas:
let str = "hello ??? world"; let unicodeStr = ""; for (let i = 0; i < str.length; i++) { let codePoint = str.codePointAt(i); // 如果该字符是大于 16 位的 Unicode 码点,则需要分组转换 if (codePoint > 0xffff) { i++; // 需要跳过下一个位置 // 将码点的高 16 位和低 16 位分别转换为 4 位的 16 进制,然后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + (codePoint >> 16).toString(16)).slice(-4) + "\u" + ("0000" + (codePoint & 0xffff).toString(16)).slice(-4); } else { // 将码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + codePoint.toString(16)).slice(-4); } } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020ud842udfb7ud842udfb7ud842udfb7u0020u0077u006fu0072u006cu0064
Dalam. kod di atas, Kami mula-mula menentukan sama ada titik kod watak semasa adalah lebih besar daripada 16 bit Jika ya, kita perlu menukar 16 bit atas dan 16 bit bawah masing-masing, dan kemudian sambungkannya ke dalam rentetan hasil. Jika ia tidak lebih besar daripada 16 digit, ia terus ditukar kepada nombor perenambelasan 4 digit dan kemudian disambungkan ke dalam rentetan hasil.
Ringkasnya, anda boleh menggunakan kaedah String.charCodeAt() dan String.codePointAt() dalam JavaScript untuk menukar aksara dalam rentetan kepada titik kod Unicode dan mewakilinya dalam bentuk uXXXX
. Jika rentetan mengandungi mata kod Unicode yang lebih besar daripada 16 bit, anda perlu menggunakan kaedah String.codePointAt() untuk menukar dan menukar 16 bit atas dan 16 bit bawah kepada nombor perenambelasan 4 digit.
Atas ialah kandungan terperinci rentetan javascript ke uxxxx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!