较真:nodejs iconv-lite库字符集转换的正确方法
  weJJYN9HsnRF 2023年12月05日 32 0

网上的流传的众多帖子教人这样做:

const iconv = require('iconv-lite');
let utf8String   = '我的文字';
let gb2312String = iconv.decode(iconv.encode(utf8String, 'utf-8'), 'gb2312');

gb2312String是什么?其实什么也不是。

正确的做法:

const iconv = require('iconv-lite');
let utf8String   = '我的文字';
let gb2312String = iconv.decode(iconv.encode(utf8String, 'gb2312'), 'gb2312');

为什么呢?

要知道连个概念:

1)utf8String(虽然名字如此)到底是什么?

这个字符串的编码类型与编辑时编辑器使用的的编码类型是一致的,并非一定是utf8.

2)iconv.encode(utf8String, 'utf-8') 到底做什么?

这个操作,是将当前字符集编码的字符串,按utf-8编码格式进行编码。

3)iconv.decode(buf, 'gb2312')到底做什么?

这个操作,是将buf按gb2312字符集转成js字符串,仅此而已。

所以,简简单单使用 iconv.encode(utf8String, 'gb2312'),就实现了gb2312字符集编码,无需画蛇添足。

更进一步测试:

将编辑器设为utf8编码,编辑并运行下面代码:

const iconv = require('iconv-lite');
const utf8String = '我的文字';
let str = iconv.decode(iconv.encode(utf8String, 'utf-8'), 'utf-8');
console.log(str);
str = iconv.decode(iconv.encode(utf8String, 'gb2312'), 'gb2312');
console.log(str);


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月05日 0

暂无评论

推荐阅读
weJJYN9HsnRF