所以作爲一個例子,當我使用FileReader API從File讀取π字符(\u03C0
)時,當我使用預期的FileReader.readAsText(blob)
讀取它時,我得到了pi字符。但是當我使用FileReader.readAsBinaryString(blob)
時,我得到結果\xcf\x80
,而這看起來與pi字符沒有任何可見的相關性。這是怎麼回事? (這可能有事情做與UTF-8/16編碼的方式......)使用FileReader在readAsBinaryString和readAsText之間的區別
6
A
回答
2
哦,如果這就是你需要的... :)
CF80
是UTF-8編碼π。
12
FileReader.readAsText
將文件的編碼考慮在內。特別是,由於您使用UTF-8編碼的文件,每個字符可能有多個字節。將其作爲文本讀取,UTF-8將按照原樣讀取,並獲得字符串。另一方面,
FileReader.readAsBinaryString
確實如它所說的那樣。它逐字節讀取文件。它無法識別多字節字符,這對於二進制文件(除了文本文件之外基本上是任何事情)都是好消息。由於π是一個雙字節字符,因此可以在字符串中得到兩個單獨的字節。
這種差異可以在許多地方看到。特別是在編碼丟失時,您看到é等字符顯示爲Ã ©。
相關問題
- 1. JavaScript FileReader中的readAsDataURL()和readAsArrayBuffer()和readAsText()之間的區別
- 2. HTML5 FileReader中的readAsBinaryString()和readAsDataURL()之間的區別API
- 3. 使用ID和onClick之間的區別
- 4. 使用AsyncTask.get()和onPostExecute()之間的區別
- 5. 使用StringTokenizer和String.split()之間的區別?
- 6. 使用Trace和TraceSource之間的區別
- 7. 使用@OneToMany和@ManyToMany之間的區別
- 8. 使用`MySql.Data`和`MySql.Data.MySqlClient`之間的區別
- 9. 的FileReader readAsBinaryString()到圖像DOM元素
- 10. 之間的〜/和的區別../
- 11. '#','%'和'$'之間的區別
- 12. {!!之間的區別!!}和{{}}
- 13. '+ ='和'= +'之間的區別?
- 14. 「。+」和「。+?」之間的區別
- 15. .eq之間的區別。和==
- 16. #。/和#之間的區別。 ./
- 17. !=和!之間的區別==
- 18. 「%〜dp0」和「。\」之間的區別?
- 19. | =和^ = css之間的區別
- 20. 之間的區別。和#
- 21. ==和case之間的區別?
- 22. 「**/* /」和「** /」之間的區別?
- 23. jQuery - '。'之間的區別和「#」
- 24. 「?1」和「?」之間的區別
- 25. `%in%`和`==`之間的區別
- 26. fmod和%之間的區別
- 27. 之間的區別:+和:+
- 28. Javascript:爲FileReader準備圖像對象readAsBinaryString
- 29. 類區域和堆之間的區別
- 30. SPFile和PublishingPage類別之間的區別
'CF80'是π的UTF-8編碼。 – deceze 2012-02-19 02:15:00
......哦,你是對的......謝謝! – gengkev 2012-02-19 04:34:40
......這可能太明顯了,但如果您願意,您可以將其作爲答案發布。 – gengkev 2012-02-19 04:37:18