Dalam pembangunan harian, kita selalunya perlu menukar rentetan ke dalam format UTF-8, kerana UTF-8 ialah kaedah pengekodan aksara universal yang menyokong aksara berbilang bahasa, termasuk bahasa Cina, Jepun, Korea, dsb. JavaScript ialah bahasa skrip yang biasa digunakan yang boleh membantu kami mencapai proses penukaran ini.
Artikel ini akan memperkenalkan cara menukar rentetan ke dalam format UTF-8 dalam JavaScript daripada aspek berikut:
UTF-8 ialah transformasi Pengekodan aksara panjang, peraturan pengekodannya adalah seperti berikut:
Contohnya, kod Unikod bagi aksara Cina "anda" ialah "U+4F60". pengekodan.
Dalam JavaScript, kami boleh menukar rentetan kepada format UTF-8 dengan mudah melalui fungsi pengekodan dan penyahkodan.
Yang pertama ialah fungsi pengekodan Kita boleh menggunakan fungsi encodeURIComponent() untuk menukar rentetan ke dalam format pengekodan URI, dan kemudian menyambung pengekodan URI setiap aksara ke dalam rentetan akhir dalam format UTF-8 kod sampel adalah seperti berikut :
function utf8Encode(str) { let encodedStr = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => { return String.fromCharCode(parseInt(p1, 16)); }); let utf8Str = ""; for (let i = 0; i < encodedStr.length; i++) { let charCode = encodedStr.charCodeAt(i); if (charCode < 128) { utf8Str += String.fromCharCode(charCode); } else if (charCode < 2048) { utf8Str += String.fromCharCode((charCode >> 6) | 192); utf8Str += String.fromCharCode((charCode & 63) | 128); } else { utf8Str += String.fromCharCode((charCode >> 12) | 224); utf8Str += String.fromCharCode(((charCode >> 6) & 63) | 128); utf8Str += String.fromCharCode((charCode & 63) | 128); } } return utf8Str; }
Antaranya, fungsi encodeURIComponent() digunakan untuk menukar rentetan kepada pengekodan URI, dan fungsi replace() digunakan untuk menyambung pengekodan URI setiap aksara menjadi aksara akhir dalam format UTF-8.
Fungsi penyahkodan menggunakan fungsi decodeURIComponent() untuk menyahkod rentetan yang dikodkan Kod sampel adalah seperti berikut:
function utf8Decode(utf8Str) { let decodedStr = ""; let i = 0; while (i < utf8Str.length) { let charCode = utf8Str.charCodeAt(i); if (charCode < 128) { decodedStr += String.fromCharCode(charCode); i++; } else if (charCode >= 192 && charCode < 224) { decodedStr += String.fromCharCode(((charCode & 31) << 6) | (utf8Str.charCodeAt(i + 1) & 63)); i += 2; } else { decodedStr += String.fromCharCode(((charCode & 15) << 12) | ((utf8Str.charCodeAt(i + 1) & 63) << 6) | (utf8Str.charCodeAt(i + 2) & 63)); i += 3; } } return decodeURIComponent(decodedStr); }
const iconv = require("iconv-lite"); let utf8Str = "欢迎使用 iconv-lite 库"; let buf = iconv.encode(utf8Str, "utf8"); // 转成 UTF-8 Buffer let gbkStr = iconv.decode(buf, "gbk"); // 转成 GBK 编码字符串
npm install iconv-lite
Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan kepada format UTF-8 dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!