乱码问题
- 浏览器(JS引擎),通常遵循UCS-2字符集,支持部分UCS-16属性
- HTML/CSS/JS文件字符集通常为UTF-8
- 可能存在HTML/CSS/JS文件字符集为GBK 的情况
- 当文件的字符集和处理文件的程序(比如,浏览器,文本编辑器)字符集不相符时,程序解码后的文字不具有可读性,称为乱码
字符集
- 文本文件本身的字符集
- 服务器通知浏览器使用何种字符集
- 浏览器最终采用的字符集
解决乱码问题
最优
【编程】文本文件使用统一字符集,如UTF-8
【编程】正确填写meta
【服务器设定】Content-Type不设定字符集
Content-Type 优先级高于 meta
次优
【编程】正确填写meta
【服务器设定】Content-Type不设定字符集
GBK 转UTF-8
var arrUint8 = new Uint8Array([206,210]);
var decoder = new TextDecoder('gbk');
document.write(decoder.decode(arrUint8)); //我
arrUint8 = new Uint8Array([230,136,145]);
decoder = new TextDecoder('utf-8');
document.write(decoder.decode(arrUint8)); // 我
var str = '我';
var encoder = new TextEncoder('utf-8');
console.log(encoder.encode(str)); // [230,136,145]