使用UTF-16LE编码的Blob URL

时间:2014-12-05 14:59:56

标签: javascript blob utf-16

我有这个字符串%22%00%41%00%22%00%09%00%22%00%42%00%22%00,它是"A"\t"B"的UTF-16LE等价物。 (\t是Tab char。)

我正在尝试构建一个Blob,然后为它构建一个URL,但输出不会被解码为正确的实体。

var blob=new Blob([stringHere],{type:'text/csv;charset=UTF-16LE;'});
var blobUrl=URL.createObjectURL(blob);

有没有告诉Blob字符串编码,以便在Excel中打开时能够正常显示(在这种特殊情况下)?

我需要UTF-16LE,否则使用UTF-8会导致Excel无法正确解析.csv文件。

感谢。

1 个答案:

答案 0 :(得分:2)

看起来你需要在文件中使用utf-16文件,你可以用js中的字符串来做,所以你必须使用一个字节数组。见下面的例子

var stringHere = '%ff%fe%22%00%41%00%22%00%09%00%22%00%42%00%22%00';
var byteArray = [];
stringHere.replace(/([0-9a-f]{2})/gi, function(d){
    byteArray.push(parseInt(d, 16));
});
var blob=new Blob([new Uint8Array(byteArray)],{type:'text/csv;charset=UTF-16LE;'});
var blobUrl=URL.createObjectURL(blob);