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 相关文章推荐
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
JS 实现百度搜索功能
Feb 01 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
Oct 25 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
二进制交叉权限微型php类分享
2014/02/07 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
javascript document.images实例
2008/05/27 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
Node.js编码规范
2014/07/14 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
python返回昨天日期的方法
2015/05/13 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
python3获取当前目录的实现方法
2019/07/29 Python
python实现宿舍管理系统
2019/11/22 Python
python加载自定义词典实例
2019/12/06 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
缅怀革命先烈演讲稿
2014/05/14 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2014全年工作总结
2014/11/27 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
吴仁宝观后感
2015/06/09 职场文书
爱的教育观后感
2015/06/17 职场文书
团支部书记竞选稿
2015/11/21 职场文书
python绘制云雨图raincloud plot
2022/08/05 Python