【发布时间】:2017-02-17 17:35:29
【问题描述】:
我正在加载一个编码为 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);
但两者都没有真正正确地改变编码。我有什么遗漏吗?
【问题讨论】:
-
您没有错误地进行编码/解码吗?从您的问题看来,您正在尝试在 win1250 中解码文件,并将其视为 utf-8?
-
是的,我确实有一个文件在 win1250 中,我希望它是 utf8。问题是,它是从字符串到字节的“编码”和从字节到字符串的“解码”。更多github.com/ashtuchkin/iconv-lite
标签: javascript encoding utf-8 iconv