2017-01-25 44 views
-1

我有一個帶'英文'字符的ansi文件我想讀取此字符並將其保存到具有相同編碼的另一個文件中(以獲得'英文'字符)。從文件讀取並寫入帶有nodejs的文件'英文'字符

const fs = require('fs'); 
var content = fs.readFileSync('input.txt',null); //Ł 
fs.writeFileSync('output.txt',content,null); //Ł how to get this? 

如何用nodejs做到這一點?

更新:我檢查輸入文件:

文件-i

text/plain的字符集= UKNOWN-8位

文件-r

非ISO擴展ASCII,帶有很長行的文本,帶有CRLF行結束符

我可以用這些細節保存文件嗎?

+1

定義「ANSI文件」 - ** **特定編碼的文件使用的是什麼?當我在下拉框(我相信使用Windows-1252)中嘗試使用記事本中的「ANSI」選項保存文件時,它無法正確保存,這讓我懷疑它是否具有該編碼中的映射。 .. –

+0

我用記事本++打開文件,它表示ANSI。 – johnerfx

+1

該代碼應該工作(不管編碼)。當你不給'readFile' /'readFileSync'一個編碼時,它讀取一個原始緩衝區(不轉換數據)。當你給'writeFile' /'writeFileSync'一個緩衝區時,它不使用編碼,它只是寫入數據。 –

回答

0

我取得了我想要的東西與存在問題的字符創建二進制字符串出緩衝器的:

const fs = require('fs'); 
function getChar(charId) { 
    let characters = { AA:165, //Ą 
     EE:202, //Ę 
     CC:198, //Ć 
     LL:163, //Ł 
     SS:140, //Ś 
     OO:211, //Ó 
     ZZ:175, //Ż 
     ZZZ:143, //Ź 
     aa:185, //ą 
     ee:234, //ę 
     cc:230, //ć 
     ll:179, //ł 
     ss:156, //ś 
     oo:243, //ó 
     zz:191, //ź 
     zzz:159 //ź 
    }; 
    let buf = new Buffer({ 
     type:'Buffer', 
     data:[ characters[charId] ], 
     encoding:'ISO-8859-2' 
    }); 
    return buf.toString('binary') 
} 
fs.writeFileSync('output.txt',getChar('LL')+" test",'ascii'); //'Ł test' 
-1

這很可能是utf-8編碼文件,而不是「ansi」文件。該'Ł'字符不能在ansi編碼中表示。使用file命令查看unix-es上已有的編碼類型並從那裏繼續。

+0

現在,這是一個*評論*(一個有用的),而不是一個答案。 –

+0

@ T.J.Crowder是真的,但在這個問題上沒有太多的東西可以繼續。希望他們能夠更新這個問題,以便我可以擴大答案。 –

+0

我用'file'命令檢查文件後,我更新了問題。 – johnerfx

相關問題