转换方法:1、用“new TextDecoder('gbk').decode(new Uint8Array([…]).buffer)”语句;2、利用“iconv.decode(Buffer.from([…]), 'gbk')”语句。
本教程操作环境:windows7系统、nodejs 14.15.4版,DELL G3电脑。
js 与 nodejs 都有 TextEncoder
TextDecoder
,可以进行编码之间的转换
nodejs 版本需要 >=8.3.0 才支持 util.TextEncoder,util.TextDecoder
gbk 转 utf8
new TextDecoder('gbk').decode(new Uint8Array([ 47, 63, 214, 208, 206, 196, 61, 56, 56 ]).buffer) // out: "/?中文=88"
nodejs 建议通过 iconv or iconv-lite第三方库进行编码之间的转换。因为使用原生 TextEncoder需要完整的 ICU Data 具体看这里 util_class_util_textdecoder
utf8 gbk 互转
let iconv = require('iconv-lite'); // 这里是utf8 let str = '/?中文=88'; // utf8转换成gbk let encoded = iconv.encode(str, 'gbk'); console.log(encoded,encoded.toJSON()) // gbk转换成utf8 str = iconv.decode(Buffer.from([ 47, 63, 214, 208, 206, 196, 61, 56, 56 ]), 'gbk'); console.log('utf8 str:',str) // out: Buffer <2F, 3F, D6, D0, CE, C4, 3D, 38, 38> // Object {data: [47, 63, 214, 208, 206, 196, 61, 56, 56], type: "Buffer"} // utf8 str: "/?中文=88"
【推荐学习:《nodejs 教程》】