我正在加载一个编码为win1250的文件,但是当我加载它时,它包含像p��jemce这样的字符,而不是příjemce (注意变音符号)。
我想把编码从win1250改为UTF8。
我设法用PHP完成了这项工作,代码如下
$content = iconv('windows-1250', 'UTF-8', $content);
但我无法在Javascript中做到这一点。我需要在客户端进行编码,而不是将其发送到服务器(所以我不能使用PHP作为“编码代理”)
我曾尝试使用库iconv-lite和text-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);但这两种方法实际上都没有正确地更改编码。我是不是漏掉了什么?
发布于 2017-02-18 01:59:20
我想你可以简单地试试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应该直接获取二进制数据。
我没有完整的开发环境,所以上面的代码没有经过充分的测试,希望它至少能给人一些启发。
https://stackoverflow.com/questions/42304146
复制相似问题