大佬教程收集整理的这篇文章主要介绍了Node.js buf.toString vs String.fromCharCode,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
String.fromCharCode产生正确的结果:
String.fromCharCode(0xed); // 'í'
但是,使用缓冲区时:
var buf = new Buffer(1); buf.writeUInt8(0xed,0); // <Buffer ed> buf.toString('utf8'); // '?',same as buf.toString() buf.toString('binary'); // 'í'
使用Buffer.toString的’binary’是deprecated,所以我想避免这种情况.
其次,我还可以预期传入的数据是多字节的(即UTF-8),例如:
String.fromCharCode(0x0512); // Ԓ - correct var buf = new Buffer(2); buf.writeUInt16LE(0x0512,0); // <Buffer 12 05>,[0x0512 & 0xff,0x0512 >> 8] buf.toString('utf8'); // Ԓ - correct buf.toString('binary'); // Ô
请注意,这两个示例都不一致.
JavaScript字符串为16-bit,UTF-16 sequences,而Node的缓冲区为8位序列.
UTF-8也是一个可变字节长度编码,代码点消耗between 1 and 6 bytes.例如,UT的UTF-8编码占用2个字节:
> new Buffer('í','utf8') <Buffer c3 ad>
并且,就其本身而言,0xed不是UTF-8编码中的有效字节,因此?代表一个“未知的角色”.但是,它是与String.fromCharCode()一起使用的有效UTF-16代码.
此外,您建议的第二个示例的输出似乎不正确.
var buf = new Buffer(2); buf.writeUInt16LE(0x0512,0); console.log(buf.toString('utf8')); // "\u0012\u0005"
您可以绕过String.fromCharCode()来查看UTF-8编码.
var buf = new Buffer(String.fromCharCode(0x0512),'utf8'); console.log(buf); // <Buffer d4 92>
以上是大佬教程为你收集整理的Node.js buf.toString vs String.fromCharCode全部内容,希望文章能够帮你解决Node.js buf.toString vs String.fromCharCode所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。