【问题标题】:How to force using Latin-1 encoding instead of UTF-16 for strings in JavaScript?如何强制在 JavaScript 中对字符串使用 Latin-1 编码而不是 UTF-16?
【发布时间】:2014-11-06 10:25:28
【问题描述】:

我有一个使用 Node.JS 的项目。我需要在 Latin1 中向终端(UART COM 端口)发送一个字符串。我刚刚意识到我无法使用 1 字节编码(如 Latin-1)创建 String 对象。

我需要从字节数组创建字符串。小于 128 的字节是 ASCII 字节,带有这些字节的字符串总是看起来不错。但是如果我传递大于 127 的字节,那么我总是检索 2 个字节的字符串(在 UTF-16 中)。

我真的只想要每个字节的 1 字节表示。我怎样才能做到这一点?

【问题讨论】:

  • @nwellnhof,这不是同一个问题。在您提到的问题中,问题是关于输出的外观。但在我的问题中,我需要以 1 字节编码获取 String 对象。
  • 您无法更改 JavaScript 字符串的编码。您需要一个接受字节数组的 API。
  • 我的一个程序员以某种方式解决了这个问题。我真的忘了在这里添加他的解决方案。但在应用程序中现在一切正常。

标签: javascript node.js encoding utf-8 latin1


【解决方案1】:

IconV 或许可以工作

类似(未经测试的代码!):

  var Buffer = require('buffer').Buffer;
  var Iconv  = require('iconv').Iconv;

  var iconv = new Iconv('UTF-16','latin1');

  bytes.forEach(function(byte){
      var bufferbyte = iconv.convert(byte);
  });

【讨论】:

  • 我尝试使用 iconv 但有一个问题:没有方法会返回所需编码的字符串。只有字节表示。我需要将字符串发送到 latin1 中的终端。这个库在这里帮不上忙。
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 2023-04-11
  • 2012-10-12
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
相关资源
最近更新 更多