首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将win1250中编码的字符串更改为utf8

将win1250中编码的字符串更改为utf8
EN

Stack Overflow用户
提问于 2017-02-18 01:35:29
回答 1查看 1.4K关注 0票数 0

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

我想把编码从win1250改为UTF8。

我设法用PHP完成了这项工作,代码如下

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

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

我曾尝试使用库iconv-litetext-encoding (在NPM上),如下所示

代码语言:javascript
复制
    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);

但这两种方法实际上都没有正确地更改编码。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-18 01:59:20

我想你可以简单地试试reader.readAsArrayBuffer

代码语言:javascript
复制
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应该直接获取二进制数据。

我没有完整的开发环境,所以上面的代码没有经过充分的测试,希望它至少能给人一些启发。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42304146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档