UTF8 to GBK Hex String
iconv-lite
通常都会使用 iconv-lite
这个包实现Node的编码转换,但是这个包是基于 Buffer
的,如果传递给其他语言的系统,需要先转换为 String
字符串。
在网上查阅了相关资料,并没有给出很好的解答。一些比较老的回答都在说,Node中无法把Buffer转换成gbk字符串。
俗话说有问题找师兄,果然,咨询同组师兄后得到了期望的结果。转换过程很巧妙,在此分享出来:
1 | const iconv = require('iconv-lite'); |
以上是不加百分号的,如果需要可以在模板字符串中自行加上。
2018-04-18更
由于Buffer
本身支持hex的转换
Buffer instances are commonly used to represent sequences of encoded characters such as UTF-8, UCS2, Base64, or even Hex-encoded data. It is possible to convert back and forth between Buffer instances and ordinary JavaScript strings by using an explicit character encoding.
‘hex’ - Encode each byte as two hexadecimal characters.
因此reduce
可以继续简化为
1 | iconv.encode(str, 'gbk').toString('hex'); |