【发布时间】:2023-03-10 16:19:01
【问题描述】:
我正在尝试显示来自 0xed (237) 的字符 í。
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 的“二进制”是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'); // Ô
请注意,这两个示例不一致。
所以,我错过了什么?我在假设我不应该做什么? String.fromCharCode神奇吗?
【问题讨论】:
标签: node.js character-encoding