我正在尝试将一些代码从 Java 移植到 Node.js,但遇到了一些麻烦。
给定 Java 中的字符串 "645553dd"
,我可以使用 .getBytes("ISO_8859_1")
提取一系列字节,看起来像 { 54, 52, 53, 53, 53, 51, 100, 100 }
。然而,我很难在 Node.js 中做同样的事情。我尝试使用缓冲区,转换为类似的 ASCII 字符集,但没有成功。我尝试使用 node-iconv ,但它一直抛出错误EILSEQ,非法字符序列
。如何在 Node.js 中获取相同的字节集?
最佳答案
您应该能够从缓冲区的 default encoding 进行转换将 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')) );
请注意,这些值以 16 进制输出 - 0x64 == 100
:
<SlowBuffer 36 34 35 35 35 33 64 64>
如果您仍然收到 EILSEQ
错误,则您的字符串包含 ISO-8859-1
不支持的字符代码。您要么必须 translate or ignore这些字符:
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>
关于java - Java String getBytes ISO_8859_1 的 Node.js 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12047458/