java - Java String getBytes ISO_8859_1 的 Node.js 等效项

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

我正在尝试将一些代码从 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/

相关文章:

java - 第一次加载 jsp 页面时 Spring url 无法正确解析,第一次点击后可以正常工作

java - Spring 启动: RestControllerAdvice: handle wrapped exceptions

调试器中的 Node.js 变量范围

node.js - 仅根据移动应用程序的需求使用 websockets(通过 socket.io)的模式

java - 从java调用带有特殊字符的url

java - 在 UTF-8 MySQL 数据库和 BoneCP 中插入日语字符串

node.js - 嵌套关系包含在带有 Node js 的 Sequelize

python - 错误: 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte

Python urllib.request.urlopen : AttributeError: 'bytes' object has no attribute 'data'

java - 堆栈溢出错误/无休止的递归