Node.js 目前支持的字符编码包括:
ascii - 仅支持 7 位 ASCII 数据。如果设置去掉高位的话,这种编码是非常快的。
utf8 - 多字节编码的 Unicode 字符。许多网页和其他文档格式都使用 UTF-8 。
utf16le - 2 或 4 个字节,小字节序编码的 Unicode 字符。支持代理对(U+10000 至 U+10FFFF)。
ucs2 - utf16le 的别名。
base64 - Base64 编码。
latin1 - 一种把 Buffer 编码成一字节编码的字符串的方式。
binary - latin1 的别名。
hex - 将每个字节编码为两个十六进制字符。
写入Buffer
新建test.js
// 创建一个 Buffer。
const buf = Buffer.alloc(256);
var len = buf.write("www.runoob.com");
console.log("写入字节数 : "+ len);
执行以上代码,在命令行中输入:
node test.js
输出结果为:
写入字节数 : 14
Buffer合并
新建concat.js,内容如下:
var buffer1 = Buffer.from(('哈哈'));
var buffer2 = Buffer.from(('www.baidu.com'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3的内容: " + buffer3.toString());
运行concat.js,输出结果如下:
buffer3的内容: 哈哈www.baidu.com
Buffer比较
新建compare.js,内容如下:
var buffer1 = Buffer.from('ab');
var buffer2 = Buffer.from('efg');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
console.log(buffer1 + " 在 " + buffer2 + "之后");
}
运行compare.js,输出结果如下
ab 在 efg之前
Buffer拷贝
新建copy.js,内容如下:
var buf1 = Buffer.from('abdxxatytuyjkyl');
var buf2 = Buffer.from('UUUUZZ');
//将 buf2 插入到 buf1 角标为2的位置上
buf2.copy(buf1, 2);
console.log(buf1.toString());
运行copy.js,输出结果如下
abUUUUZZtuyjkyl
从Buffer读取数据
新建read.js,内容如下:
buf = Buffer.alloc(26);
for (var i = 0 ; i < 26 ; i++) {
buf[i] = i + 97;
}
console.log( buf.toString('ascii')); //使用 'ascii' 编码
console.log( buf.toString('ascii',0,5)); // 使用 'ascii' 编码
console.log( buf.toString('utf8',0,5)); // 使用 'utf8' 编码
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码
console.log( buf.toString('base64',0,5)); // 使用 'base64' 编码
运行read.js,输出结果为:
abcdefghijklmnopqrstuvwxyzabcde
abcde
abcde
YWJjZGU=
Buffer裁剪
新建slice.js,内容如下:
var buffer1 = Buffer.from('12saghhz');
// 剪切缓冲区
var buffer2 = buffer1.slice(0,5);
console.log("buffer2的内容: " + buffer2.toString());
运行slice.js,结果如下:
buffer2的内容: 12sag