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 二进制运算技巧解析
Nov 27 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
JavaScript实现动态留言板
Mar 16 Javascript
JS实现网页时钟特效
Mar 25 Javascript
vue实现简单学生信息管理
May 30 Javascript
JavaScript实现移动端拖动元素
Nov 24 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写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php-msf源码详解
2017/12/25 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
Python获取文件ssdeep值的方法
2014/10/05 Python
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
opencv与numpy的图像基本操作
2019/03/08 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
安卓程序员求职信
2014/02/28 职场文书
元宵节主持词
2014/03/25 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
个人校本研修方案
2014/05/26 职场文书
慈善募捐倡议书
2015/04/27 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python