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 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
js自定义事件代码说明
Jan 31 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 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中的实现trim函数代码
2007/03/19 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
Python 3中print函数的使用方法总结
2017/08/08 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
实习鉴定范文
2013/12/19 职场文书
学校节能减排方案
2014/06/13 职场文书
诚信承诺书
2015/01/19 职场文书
违纪开除通知书
2015/04/25 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS