我知道JavaScript字符串are usually编码with an encoding taking at least two bytes per character(UTF-16或UCS-2)。
但是,在构造Blob时,似乎使用了不同的编码,因为当我将其读作ArrayBuffer
时,返回的缓冲区的长度为3,表示欧元符号。
var b = new Blob(['€']);
答案 0 :(得分:2)
根据W3C, UTF-8 编码。
演示:
// Create a Blob with an Euro-char (U+20AC)
var b = new Blob(['€']);
var fr = new FileReader();
fr.onload = function() {
ua = new Uint8Array(fr.result);
// This will log "3|226|130|172"
// E2 82 AC
// In UTF-16, it would be only 2 bytes long
console.log(
fr.result.byteLength + '|' +
ua[0] + '|' +
ua[1] + '|' +
ua[2] + ''
);
};
fr.readAsArrayBuffer(b);
在JSFiddle上播放。