javascript - 对于不同的编码,相当于 JavaScript 中 Java 的 getBytes

标签 javascript arrays encoding decoding windows-1252

我有一个 Java 函数,需要将其转换为 JavaScript,其中包含以下行:

byte[] bytes = ttText.getBytes(Charset.forName("Cp1250"));

ttText 是字符串。我也需要这样做。我需要获取以 Cp1250 (windows-1250) 编码的字符串的字节,修改这些字节,然后将其转换回字符串。有没有办法在 JavaScript 中做到这一点?

我发现例如TextEncoderTextDecoder但对 UTF-8 以外的编码的支持不久前已被删除。

最佳答案

var cp1250 = '€ ‚ „…†‡ ‰Š‹ŚŤŽŹ ‘’“”•–— ™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙';

function encodeCP1250(text) {
  var buf = [];
  for (var i = 0; i < text.length; i++) {
    var code = cp1250.indexOf(text[i]);
    if (code >= 0) {
      code += 128;
    } else {
      code = text.charCodeAt(i);
    }
    buf.push(code > 255 ? 32 : code);
  }
  return buf;  
}

function decodeCP1250(buf) {
  var text = '';
  for (var i = 0; i < buf.length; i++) {
    var code = buf[i];
    text += code > 127 ? cp1250[code - 128] : String.fromCharCode(code);
  }
  return text;  
}

var buf = encodeCP1250('AÁÂĂÄ'); // [65, 193, 194, 195, 196]
var text = decodeCP1250(buf);    // 'AÁÂĂÄ'

更新: Chrome 和 Firefox 有 TextDecoder作为实验性功能,但 TextEncoder 仅适用于 UTF-8。

关于javascript - 对于不同的编码,相当于 JavaScript 中 Java 的 getBytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968157/

相关文章:

python - 如何将数组中的零转换为Nan?

php - 来自 PHP 字符串的 JavaScript 数组

javascript - Visual Studio 2015 中的 Typescript 设置出现错误 : `exports is not defined` . 如何正确设置?

javascript - 如何使用 linq.js 将字符串数组与对象数组进行比较

macos - 如何调试 Mac OS 不使用硬件 H264 编码器的原因

c# - XmlException : Text node cannot appear in this state. 第 1 行,位置 1

android - Android 中的 UTF-8 与 UTF-8 的定义相比

javascript - 如何使用 onclick 将 php 图像更改为另一个 php 图像

javascript - MDL 表单在加载时无效

c - 在 C 中使用指针对字符串数组进行排序