gen*_*kev 7 javascript string html5 utf typed-arrays
举个例子,当我\u03C0使用FileReader API从File中读取π字符()时,当我使用FileReader.readAsText(blob)期望的内容读取它时,我会将pi字符返回给我.但是当我使用时FileReader.readAsBinaryString(blob),我得到了结果\xcf\x80,这似乎与pi字符没有任何明显的相关性.这是怎么回事?(这可能与UTF-8/16的编码方式有关...)
Nie*_*sol 17
FileReader.readAsText将文件的编码考虑在内.特别是,由于您具有以UTF-8编码的文件,因此每个字符可能有多个字节.将其作为文本读取,UTF-8按原样读取,你得到你的字符串.
FileReader.readAsBinaryString另一方面,它完全符合它的说法.它逐字节读取文件.它不识别多字节字符,这对于二进制文件尤其是好消息(基本上除了文本文件之外的任何东西).由于π是一个双字节字符,因此您将获得在字符串中组成的两个单独字节.
这种差异可以在很多地方看到.特别是当编码丢失并且您看到é等字符显示为é时.