→ mmis1000:regex? 01/29 23:55
→ mmis1000:如果是utf8,應該可以直接用regex處理 01/30 00:02
→ mmis1000:big5的話,因為編碼區有部分跟低位符號重疊,會導致問題 01/30 00:04
→ vanillastarp:感謝樓上回覆 可以問一下怎麼下regex嗎? (regexp苦手 01/30 01:07
→ mmis1000:但可以的話,最好用內建的元件生成json,以免導致問題 01/30 01:29
→ mmis1000:自己刻的話,一定要確保特殊符號都有被編碼,以免挖洞 01/30 01:30
→ danny8376:這邊的話會建議先把當檔案轉成Object 01/30 03:52
→ danny8376:然後再用JSON.stringify去轉成JSON 01/30 03:52
→ danny8376:這樣問題會比較少 01/30 03:52
→ vanillastarp:補充: 這個檔案是 utf-16 LE 的 (HEX頭兩組 FF FE 01/30 11:08
推 mmis1000:如果空格數不確定,用split會有問題 01/31 17:03
最近因為跑出去玩 所以這段時間都閒置
感謝各位的意見 我已使用以下的方法:
var fs = require('fs'),
Iconv = require('iconv').Iconv;
var box = {};
var buffer = fs.readFileSync(__dirname + '\\db\\text.txt'),
iconv = new Iconv( "UTF-16", "UTF-8");
var result = iconv.convert(buffer).toString("utf8");
var jsonString = "{"
var lines = result.split("\n");
for(var i = 0;i < lines.length - 1;i++){
var fields = lines[i].split("\t");
var tmp = parseInt(fields[0]);
//例外名單 去除含有特殊符號
if((tmp == 2392)||(tmp == 2393)||(tmp == 2394)||(tmp == 2395)||
(tmp == 2811)||(tmp == 2832)||(tmp == 6425)||
(tmp == 6426)||(tmp == 6427)||(tmp == 6428))
continue;
jsonString += '"' + parseInt(fields[0]) + '":"' + fields[1].substr(0,fields[1].length - 1) + '",';
}
jsonString += '"99999":"none"}';
box = JSON.parse(jsonString);
感謝各位的幫助
※ 編輯: vanillastarp 來自: 220.132.199.232 (02/04 18:53)
→ mmis1000:給個小建議,用['1','2','3'].join('')會比'1'+'2'+'3' 02/05 00:29
→ mmis1000:來得有效率,雖然少量資料應該差不了多少就是了 02/05 00:30