msdlisper Front-end

Javascript和Unicode

2019-10-30

字符编码是怎么一会事

背景

发现在浏览器的控制台输入”\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字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

参考


Comments

Content