[英]Change string encoded in win1250 to utf8
我正在加载一个编码为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);
但实际上都没有正确更改编码。 有什么我想念的吗?
我认为您可以简单地尝试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
应该直接获取二进制数据。
我没有完整的开发环境,因此上述代码尚未经过全面测试,希望至少可以鼓舞人心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.