字符编码是怎么一会事
背景
发现在浏览器的控制台输入”\u00e9”, 会自动转换为中文? 发现在一个中文字符的Length为2, 为啥
javascript的字符集
javascript程序是使用Unicode字符集编写的。Unicode是ASCII和Latin-1的超集,并支持地球上几乎所有的语言。ECMAScript3要求JavaScript必须支持Unicode2.1及后续版本,ECMAScript5则要求支持Unicode3及后续版本。所以,我们编写出来的javascript程序,都是使用Unicode编码的。
Unicode
将代码进行Unicode编码
function encodeUnicode(input) {
let res = [];
for (let i = 0; i < input.length; i++) {
res[i] = ("00" + input.charCodeAt(i).toString(16)).slice(-4);
}
return "\\u" + res.join("\\u");
}
将Unicode转变成中文
function decodeUnicode(input) {
return unescape(input.replace(/\\u/gi, '%u'));
}
UTF-8
UTF-8(UTF8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。
它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。