javascript - 将win1250编码的字符串更改为utf8

标签 javascript encoding utf-8 iconv

我正在加载一个编码为 win1250 的文件,但是当我加载它时,它包含诸如 p��jemce 之类的字符,而不是 příjemce (注意变音符号。)

我想将编码从 win1250 更改为 UTF8。

我设法使用以下代码在 PHP 中完成此操作

$content = iconv('windows-1250', 'UTF-8', $content);

但我无法用 JavaScript 做到这一点。我需要在客户端上进行此编码而不将其发送到服务器(因此我不能使用 PHP 作为“编码代理”)

我尝试像这样使用库 iconv-litetext-encoding (在 NPM 上)

    var reader = new FileReader();

    reader.onload = () => {
      var data = reader.result;
      // iconv-lite
      var buf = iconv.encode(data, 'win1250');
      var str1 = iconv.decode(new Buffer(buf), 'utf8');

      // text-encoding
      var uint8array = new TextEncoder('windows-1250').encode(data);
      var str2 = new TextDecoder('utf-8').decode(uint8array);

      console.log(str1);
      console.log(str2);
    };

    reader.readAsText(file);

但两者都没有真正正确地更改编码。我有什么遗漏的吗?

最佳答案

我认为你可以简单地尝试reader.readAsArrayBuffer

var reader = new FileReader();
reader.onload = () => {
  var buf = reader.result;
  // iconv-lite
  var str1 = iconv.decode(buf, 'win1250');

  // text-encoding
  var str2 = new TextDecoder('windows-1250').decode(buf);

  console.log(str1);
  console.log(str2);
};

reader.readAsArrayBuffer(file);

如果readAsArrayBuffer应该直接获取二进制数据。

我没有完整的开发环境,因此上面的代码没有经过充分测试,希望它至少能起到启发作用。

关于javascript - 将win1250编码的字符串更改为utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304146/

相关文章:

javascript - 组件返回失败代码 : 0x80040111 (NS_ERROR_NOT_AVAILABLE)

javascript - 获取对象数组中重复键的值

PHP 警告 : json_encode() [<a href ='function.json-encode' >function. json-encode</a>]:参数中的 UTF-8 序列无效

javascript - PhantomJS 将字符变成坏数据

regex - 字符名称,替换和Umlaut “Ü”:格式错误的UTF-8字符

javascript - 如何调度已经在javascript中调度的事件?

javascript - 使用 Javascript 在选择中查找换行符?

java - Java 中的 ISO-8859-1 到 UTF-8

windows - 用于在 Windows 上更正 Linux 文件名的脚本,反之亦然?

python - 如何在 python 2.5 中将 UTF8 字符串转换为 HTML 字符串以正确显示重音?