Node.js等效于Java String getBytes ISO_8859_1

时间:2012-08-21 01:48:45

标签: java node.js character-encoding iso-8859-1

我正在尝试将一些代码从Java移植到Node.js,我遇到了一些麻烦。

给定Java中的字符串"645553dd",我可以使用看起来像.getBytes("ISO_8859_1")的{​​{1}}来提取一系列字节。但是,我很难在Node.js中做同样的事情。我尝试使用缓冲区,转换为类似的ASCII字符集,但没有运气。我尝试使用node-iconv,但它不断抛出错误{ 54, 52, 53, 53, 53, 51, 100, 100 }。如何在Node.js中获得相同的字节集?

1 个答案:

答案 0 :(得分:4)

您应该可以使用UTF-8将缓冲区的ISO-8859-1 iconv转换为var Iconv = require('iconv').Iconv; var ic8859 = new Iconv('UTF-8', 'ISO-8859-1'); console.log( ic8859.convert(new Buffer('645553dd')) );

0x64 == 100

请注意,这些值以base-16 - <SlowBuffer 36 34 35 35 35 33 64 64> 输出:

EILSEQ

如果您仍然收到ISO-8859-1错误,则您的字符串包含var ic8859 = new Iconv('UTF-8', 'ISO-8859-1//IGNORE'); 不支持的字符代码。你要么必须default encoding这些字符:

console.log(new Buffer('645553dd'));
// <Buffer 36 34 35 35 35 33 64 64>

或尝试使用其他编码,例如translate or ignore

{{1}}