Javascript 构造Blob时的字符串编码

Javascript 构造Blob时的字符串编码,javascript,encoding,utf-8,Javascript,Encoding,Utf 8,我知道JavaScript字符串是经过编码的(UTF-16或UCS-2) 但是,在构造Blob时,似乎使用了不同的编码,因为当我将其读取为ArrayBuffer时,返回的缓冲区长度是3,表示欧元符号 var b = new Blob(['€']); 根据标准,它是UTF-8编码的 演示: //创建一个带有欧元字符(U+20AC)的Blob var b=新的Blob(['€]); var fr=new FileReader(); fr.onload=函数(){ ua=新的UINT8阵列(fr.

我知道JavaScript字符串是经过编码的(UTF-16或UCS-2)

但是,在构造Blob时,似乎使用了不同的编码,因为当我将其读取为
ArrayBuffer
时,返回的缓冲区长度是3,表示欧元符号

var b = new Blob(['€']);
根据标准,它是UTF-8编码的

演示:

//创建一个带有欧元字符(U+20AC)的Blob
var b=新的Blob(['€]);
var fr=new FileReader();
fr.onload=函数(){
ua=新的UINT8阵列(fr.result);
//这将记录“3 | 226 | 130 | 172”
//E2 82 AC
//在UTF-16中,它只有2字节长
console.log(
fr.result.bytellength+“|”+
ua[0]+'|'+
ua[1]+'|'+
ua[2]+''
);
};
fr.readAsArrayBuffer(b)