深入浅出Node.js读书笔记:Buffer的转换(6.2)

Buffer对象可以与字符串之间相互转换。目前支持的字符串编码类型如下:

1.ASCII
2.UTF-8
3.UTF-16LE/UCS-2
4.Base64
5.Binary
6.Hex

6.2.1 字符串转Buffer

字符串转Buffer通过构造函数完成,如new Buffer(str,[encoding]),Encoding不传时,默认用UTF-8编码。另外Buffer里可以同时支持多个编码类型进行转换,所以在使用时需要额外注意。

6.2.2 Buffer转字符串

实现Buffer向字符串的转换可以通过Buffer对象的toString方法,如下:

buf.toString([encoding],[start],[end])

如果Buffer对象由多种编码写入,就需要在局部指定不同的编码,才能转换回正常的编码。

6.2.3 Buffer不支持的编码类型

Buffer只支持有限的编码类型,如果想判断是否支持该编码,可以通过Buffer.isEncoding(encoding)

常用的中文编码,如GBK,GB2312和BIG-5等都不支持。对于不支持的编码,可以使用第三方库,如iconv-lite或iconv实现,前者是纯Javascript实现,后者通过c++间接调用libiconv库,采用的话需要消耗一定的CPU。

另外iconv和iconv-lite对无法转换的内容进行降级处理的方案不尽相同。iconv-lite无法转换的内容如果是多字节,会输出乱码。iconv则有三级降级策略,会尝试翻译无法转换的内容,或者忽略这些内容。如果不设置忽略,iconv对于无法转换的内容将会得到EILSEQ异常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值