2

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

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

4

1 回答 1

4

您应该能够从 Buffer 的默认编码UTF-8转换为ISO-8859-1with iconv

var Iconv  = require('iconv').Iconv;
var ic8859 = new Iconv('UTF-8', 'ISO-8859-1');

console.log( ic8859.convert(new Buffer('645553dd')) );

请注意,这些值是以 base-16 输出的 -- 0x64 == 100

<SlowBuffer 36 34 35 35 35 33 64 64>

如果您仍然收到EILSEQ错误,则您的字符串包含不支持的字符代码ISO-8859-1。您必须翻译或忽略这些字符:

var ic8859 = new Iconv('UTF-8', 'ISO-8859-1//IGNORE');

或者尝试不同的编码,例如UTF-8

console.log(new Buffer('645553dd'));
// <Buffer 36 34 35 35 35 33 64 64>
于 2012-08-21T03:27:21.370 回答