我正在尝试显示 (237) 中的í
字符0xed
。
String.fromCharCode
产生正确的结果:
String.fromCharCode(0xed); // 'í'
但是,当使用Buffer
:
var buf = new Buffer(1);
buf.writeUInt8(0xed,0); // <Buffer ed>
buf.toString('utf8'); // '?', same as buf.toString()
buf.toString('binary'); // 'í'
Buffer.toString
不推荐使用“二进制”,所以我想避免这种情况。
其次,我还可以期望传入的数据是多字节的(即 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'); // Ô
请注意,这两个示例都不一致。
所以,我错过了什么?我在假设我不应该做什么?很String.fromCharCode
神奇吗?