pass codepage option to DSV `buffer` parser

Fixes #1218 ; Closes #1219
This commit is contained in:
Victor Phung 2018-02-12 11:28:42 -08:00
parent 82e909e0ed
commit 01de12d24f

View File

@ -833,13 +833,17 @@ var PRN = (function() {
switch(opts.type) {
case 'base64': str = Base64.decode(d); break;
case 'binary': str = d; break;
case 'buffer': str = d.toString('binary'); break;
case 'array': str = cc2str(d); break;
case 'buffer':
if(opts.codepage == 65001) str = d.toString('utf8');
else if(opts.codepage && typeof cptable !== 'undefined') str = cptable.utils.decode(opts.codepage, d);
else str = d.toString('binary');
break;
case 'array': str = cc2str(d); break;
case 'string': str = d; break;
default: throw new Error("Unrecognized type " + opts.type);
}
if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));
else if((opts.type == 'binary' || opts.type == 'buffer') && typeof cptable !== 'undefined' && opts.codepage) str = cptable.utils.decode(opts.codepage, cptable.utils.encode(1252,str));
else if((opts.type == 'binary') && typeof cptable !== 'undefined' && opts.codepage) str = cptable.utils.decode(opts.codepage, cptable.utils.encode(1252,str));
if(str.slice(0,19) == "socialcalc:version:") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);
return prn_to_sheet_str(str, opts);
}
@ -885,4 +889,3 @@ function read_wb_ID(d, opts) {
return PRN.to_workbook(d, opts);
}
}