[英]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.