Node.js API详解之 string_decoder用法实例分析


Posted in Javascript onApril 29, 2020

本文实例讲述了Node.js API详解之 string_decoder用法。分享给大家供大家参考,具体如下:

string_decoder 模块提供了一个 API,用于把 Buffer 对象解码成字符串。

对于参数末尾不完整的多字节字符,string_decoder会将其保存在内部的buffer中,当再次解码时,补充到参数开头。

通过 const { StringDecoder } = require(‘string_decoder'); 的方式引用string_decoder模块。

目录:

  • new StringDecoder([encoding])
  • stringDecoder.write(buffer)
  • stringDecoder.end([buffer])

new StringDecoder([encoding])

说明:

创建一个新的StringDecoder实例,可传递encoding参数作为字符编码格式,默认为'utf8′

stringDecoder.write(buffer)

说明:

返回一个解码后的字符串,并确保返回的字符串不包含残缺的多字节字符,残缺的多字节字符会被保存在一个内部的 buffer 中,
用于下次调用 stringDecoder.write() 或 stringDecoder.end()。
buffer:待解码的Buffer

demo:

const decoder = new StringDecoder('utf8');
 
//字符的16进制小于0x80属于单字节
let outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67]));
 
console.log(outString);
//xiaoqiang
 
//字符的16进制大于0x80属于双字节
outString = decoder.write(Buffer.from([0xC2, 0xA2]));
 
console.log(outString);
//¢
 
//单双字节混合,置于末尾
outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67,       0xC2]));
 
console.log(outString);
//xiaoqiang
 
outString = decoder.write(Buffer.from([0xA2]));
 
console.log(outString);
//¢
 
//单双字节混合,置于中间
outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71,       0xC2, 0x69, 0x61, 0x6e, 0x67]));
 
console.log(outString);
//xiaoq?iang
 
outString = decoder.write(Buffer.from([0xA2]));
 
console.log(outString);
//?
 
//单双字节混合,置于开始
outString = decoder.write(Buffer.from([0xC2,     0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67]));
 
console.log(outString);
//?xiaoqiang
 
outString = decoder.write(Buffer.from([0xA2]));
 
console.log(outString);
//?
 
//单双字节混合,置于末尾
outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67,       0xC2]));
 
console.log(outString);
//xiaoqiang
 
outString = decoder.write(Buffer.from([0x78,0xA2]));
 
console.log(outString);
//?x?

stringDecoder.end([buffer])

说明:

以字符串的形式返回内部 buffer 中剩余的字节,残缺的字节会被替换成符合字符编码的字符
如果提供了 buffer 参数,则在返回剩余字节之前会再执行一次 stringDecoder.write()

demo:

const decoder = new StringDecoder('utf8');
 
//字符的16进制小于0x80属于单字节
let outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67]));
 
console.log(outString);
//xiaoqiang
 
outString = decoder.end();
 
console.log(outString);
//
 
//单双字节混合,置于末尾
outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67,       0xC2]));
 
console.log(outString);
//xiaoqiang
 
outString = decoder.end(Buffer.from([0xA2]));
 
console.log(outString);
//¢
 
//单双字节混合,置于末尾
outString = decoder.write(Buffer.from([0x78, 0x69, 0x61, 0x6f, 0x71, 0x69, 0x61, 0x6e, 0x67,       0xC2]));
 
console.log(outString);
//xiaoqiang
 
outString = decoder.end();
 
console.log(outString);
//?

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
Aug 20 Javascript
js实现两点之间画线的方法
May 12 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
jQuery实现大图轮播
Feb 13 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
深入浅析vue全局环境变量和模式
Apr 28 #Javascript
你准备好迎接vue3.0了吗
Apr 28 #Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 #Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 #Javascript
JS求解两数之和算法详解
Apr 28 #Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 #jQuery
uni-app如何页面传参数的几种方法总结
Apr 28 #Javascript
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
JS Math对象与Math方法实例小结
2019/07/05 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python while true实现爬虫定时任务
2020/06/08 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
遗体告别仪式答谢词
2014/01/23 职场文书
2014年班务工作总结
2014/12/02 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
重阳节简报
2015/07/20 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书