举个例子,当我使用FileReader API从文件中读取π字符(\u03C0
)时,当我使用FileReader.readAsText(blob)
读取它时,我会将pi字符返回给我。但是当我使用FileReader.readAsBinaryString(blob)
时,我会得到结果\xcf\x80
,而这似乎与pi字符没有任何明显的相关性。这是怎么回事? (这可能与UTF-8/16的编码方式有关...)
答案 0 :(得分:15)
FileReader.readAsText
会考虑文件的编码。特别是,由于您具有以UTF-8编码的文件,因此每个字符可能有多个字节。将其作为文本阅读,UTF-8按原样读取,你得到你的字符串。
FileReader.readAsBinaryString
正如它所说的那样。它逐字节读取文件。它不识别多字节字符,这对于二进制文件尤其是好消息(基本上除了文本文件之外的任何东西)。由于π是一个双字节字符,因此您将获得在字符串中组成的两个单独字节。
这种差异可以在很多地方看到。特别是当编码丢失并且您看到é等字符显示为Ã。。
时答案 1 :(得分:2)
哦,如果这就是你所需要的......:)
CF80
是π的UTF-8编码。