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 相关文章推荐
利用javascript实现一些常用软件的下载导航
Aug 03 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
Mar 14 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
js返回顶部实例分享
Dec 21 Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
在create-react-app中使用css modules的示例代码
Jul 31 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
DOM 事件流详解
2015/01/20 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
Python列表list数组array用法实例解析
2014/10/28 Python
Python实现的质因式分解算法示例
2018/05/03 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
flask session组件的使用示例
2018/12/25 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
python psutil监控进程实例
2019/12/17 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
北京SQL新华信咨询
2016/09/30 面试题
别名指示符是什么
2012/10/08 面试题
白酒业务员岗位职责
2013/12/27 职场文书
晚会主持词开场白
2014/03/17 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
爱我中华演讲稿
2014/05/20 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP