【问题标题】:Node.js Equivalent of Java String getBytes ISO_8859_1Java String getBytes ISO_8859_1 的 Node.js 等效项
【发布时间】:2012-08-21 01:48:44
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您应该能够使用iconv 将缓冲区的default encodingUTF-8 转换为ISO-8859-1

    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 不支持的字符代码。你要么必须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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 2011-10-12
      • 2016-08-23
      相关资源
      最近更新 更多