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

 更新时间:2020年04月29日 08:46:58   作者:李小强  
这篇文章主要介绍了Node.js API详解之 string_decoder用法,结合实例形式分析了Node.js API中string_decoder的功能、用法及操作注意事项,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • npm全局模块卸载及默认安装目录修改方法

    npm全局模块卸载及默认安装目录修改方法

    今天小编就为大家分享一篇npm全局模块卸载及默认安装目录修改方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • nodejs爬虫抓取数据乱码问题总结

    nodejs爬虫抓取数据乱码问题总结

    这篇文章主要给大家总结了下nodejs爬虫抓取数据乱码问题的相关资料,需要的朋友可以参考下
    2015-07-07
  • Nodejs libuv运行原理详解

    Nodejs libuv运行原理详解

    在本篇文章里小编给大家整理的是关于Nodejs libuv运行原理以及相关知识点,有需要的朋友们可以学习下。
    2019-08-08
  • 解析NodeJS异步I/O的实现

    解析NodeJS异步I/O的实现

    本篇文章主要介绍了解析NodeJS异步I/O的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 详解nodejs模板引擎制作

    详解nodejs模板引擎制作

    本篇文章主要介绍了nodejs模板引擎制作 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 如何在node.js中使用​JsonWebToken模块进行token加密

    如何在node.js中使用​JsonWebToken模块进行token加密

    目前在web框架中最流行的身份验证是使用jsonwebtoken,简称jwt.可以设置加密方式,过期时间,存放个人信息,逆解析,下面这篇文章主要给大家介绍了关于如何在node.js中使用​JsonWebToken模块进行token加密的相关资料,需要的朋友可以参考下
    2023-03-03
  • 解决npm i 报错以及python安装卡住的问题

    解决npm i 报错以及python安装卡住的问题

    这篇文章主要介绍了解决npm i 报错以及python安装卡住的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Node.js发出请求走Proxyman代理调试tip详解

    Node.js发出请求走Proxyman代理调试tip详解

    这篇文章主要为大家介绍了Node.js发出请求走Proxyman代理调试tip详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • nodejs对文件中的图片进行归类操作示例

    nodejs对文件中的图片进行归类操作示例

    这篇文章主要为大家介绍了nodejs对文件中的图片进行归类的实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    下面小编就为大家带来一篇完美解决node.js中使用https请求报CERT_UNTRUSTED的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论