我試圖從0xed
(237)顯示字符í
。Node.js buf.toString vs String.fromCharCode
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
?
我不知道s4.3.16,所以謝謝你。原來我忽略了二進制數據文件中的編碼:它是ISO-8859-1。 * doh *使用Iconv我能夠成功轉碼:var v = new Iconv('ISO-8859-1','UTF-8'); v.convert(BUF)的ToString( 'UTF8');'。 – zamnuts