坑爹的Volley StringRequest 【String getBytes 理解】

    今日從服務器上獲取txt文件顯示,因爲內容是中文,所以出現了亂碼,編碼問題嘛,隨便搞搞。但是怎麼的都不行,最後去比較每個字節。發現服務器TXT文件編碼爲UTF-8。app端也是用UTF-8來解析,沒毛病,爲啥就顯示亂碼呢。


    也算是重溫了下基礎,分別將服務器端的返回。分別用getBytes("UTF-8")和getBytes("GBK")。發現返回的字節數組長度還不同。隱約發現了問題。返回的字節數組都有丟失,怎麼可能能正常顯示呢。比較了服務器的原始返回和getBytes()已經完全不一樣了。最終在Vollery的StringRequest中的parseCharset中發現。如果沒有發現服務器字符集配置。默認返回ISO-8859-1。坑爹呢。不虧是老外寫的代碼,默認爲啥不返回UTF-8呢。用ISO-8859-1的String.getBytes("UTF-8")。肯定無法還原原始數據。所以對於想要在字節數組和String之間相互轉換並且沒有損失。就得以什麼編碼生成String的,就以什麼編碼getBytes.這樣就能獲得原始的字節數組了。然後就可以用正確的編碼來顯示了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章