Nodejs中使用string_decoder模块将buffer转成string


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家介绍一下Nodejs中使用string_decoder模块将buffer转成string的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

模块简介

string_decoder模块用于将Buffer转成对应的字符串。使用者通过调用stringDecoder.write(buffer),可以获得buffer对应的字符串。【推荐学习:《nodejs 教程》】

它的特殊之处在于,当传入的buffer不完整(比如三个字节的字符,只传入了两个),内部会维护一个internal buffer将不完整的字节cache住,等到使用者再次调用stringDecoder.write(buffer)传入剩余的字节,来拼成完整的字符。

这样可以有效避免buffer不完整带来的错误,对于很多场景,比如网络请求中的包体解析等,非常有用。

入门例子

这节分别演示了decode.write(buffer)decode.end([buffer])两个主要API的用法。

例子一:

decoder.write(buffer)调用传入了Buffer对象<Buffer e4 bd a0>,相应的返回了对应的字符串;

1

2

3

4

5

6

const StringDecoder = require('string_decoder').StringDecoder;

const decoder = new StringDecoder('utf8');

 

// Buffer.from('你') => <Buffer e4 bd a0>

const str = decoder.write(Buffer.from([0xe4, 0xbd, 0xa0]));

console.log(str);  // 你

例子二:

decoder.end([buffer])被调用时,内部剩余的buffer会被一次性返回。如果此时带上buffer参数,那么相当于同时调用decoder.write(buffer)decoder.end()

1

2

3

4

5

6

7

8

9

const StringDecoder = require('string_decoder').StringDecoder;

const decoder = new StringDecoder('utf8');

 

// Buffer.from('你好') => <Buffer e4 bd a0 e5 a5 bd>

let str = decoder.write(Buffer.from([0xe4, 0xbd, 0xa0, 0xe5, 0xa5]));

console.log(str);  // 你

 

str = decoder.end(Buffer.from([0xbd]));

console.log(str);  // 好

例子:分多次写入多个字节

下面的例子,演示了分多次写入多个字节时,string_decoder模块是怎么处理的。

阅读剩余部分

相关阅读 >>

node.js访问sql数据库的方法

nodejs中使用string_decoder模块将buffer转成string

nodejs怎么结束进程

前端用nodejs能做什么

浅谈nodejs如何进行多线程处理

windows环境下怎么安装nodejs

详解多个node版本下如何指定版本运行项目?

2021年8个值得收藏的nodejs项目

了解nodejs中的模块载入

一文快速了解nodejs中crypto模块的用法

更多相关阅读请进入《nodejs》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...