编码学习

yarn add iconv-lite
1
const iconv = require("iconv-lite");

const gbk = iconv.encode("hello,世界", "gbk");
const utf8 = Buffer.from("hello,世界", "utf8");

console.log(gbk);
console.log(utf8);
1
2
3
4
5
6
7

最终输出结果

<Buffer 68 65 6c 6c 6f a3 ac ca c0 bd e7>
<Buffer 68 65 6c 6c 6f ef bc 8c e4 b8 96 e7 95 8c>
1
2

可以看见,前面的 hello 是一样的。在中文字符加入后,发生了微妙的变化。

也正是 buffer 的不一样,导致了 解码的不一样,最终乱了码。

gbk 可以 通过这样的操作,转为了 utf8

Buffer.from(iconv.decode(gbk, "gbk"), "utf8");
1