1. 程式人生 > >android 中文亂碼的分析與總結

android 中文亂碼的分析與總結

對於gbk這種編碼而言,中文所對應的位元組數是2byte;而在utf-8中,中文則是對應三個位元組。於是在輸入奇數個漢字時,最後一個位元組在gbk中則無法編譯。譬如說utf-8編碼的3個字,編碼是123|456|789 ,在傳輸到伺服器中時,系統認為這9個位元組是gbk編碼,於是就變成了12|34|56|78|9。後面多出的一個位元組不能夠編譯成漢字,此時常用“?”來代替。於是最後一個byte變成了“?”(ASCII碼為63)。這時再將它轉成utf-8時,則變成了123|456|78?。這個時候第三個字也不能正確地讀取了,於是出現了(兩個問號)。
正確的方式應該是
String msg_client = new
 String(bb, "utf-8"); 去構建
而不是通過bufferedreader一行一行的讀取
String msg_client = new String(msg_client1.getBytes("gbk"), "utf-8");