真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

怎么解決java中byte[]轉成String的亂碼問題-創(chuàng)新互聯

怎么解決java中byte[]轉成String的亂碼問題?針對這個問題,今天小編總結了這篇文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網站空間、營銷軟件、網站建設、民樂網站維護、網站推廣。

首先常用的byte[]直接轉String很簡單:

public static void main(String[] args) {  
String str="我是中國人";  
byte[] arr=str.getBytes();  
System.out.println("打?。?+arr);
for(byte e : arr) {
System.out.print(e + " ");
}
String str2=new String(arr);  
System.out.println("\n打印2:"+str2);  
}

比如上面這個,輸出的結果是:

打印:[B@15db9742
-50 -46 -54 -57 -42 -48 -71 -6 -56 -53 
打印2:我是中國人

看到這個就知道編碼了。byte是一個字節(jié),漢字是兩個字節(jié)。所以五個漢字要十個byte類型的數字存儲。然后數字變成漢字,這中間就是走了一個編碼規(guī)范的過程。

java中是如何處理字符編碼的?

JAVA使用自己的String類,并且String類對象是不需要指定編碼表的!為什么它會自己知道一堆數字各代表什么字符呢?就是因為String里的字符信息是用UNICODE編碼存放的。而JAVA為了表示字符(注意是單個字符),也有char這個數據類型,而且他的大小是固定2個8位16進制數字長度,也就是0~65535。為的就是對應UNICODE里面的一個字符。

大家如果想取一個String里的按UNICODE數字,可以用getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 方法取得一個char[],這個char[]里就是表示String字符的,按UNICODE編碼表編碼的數字。

為什么byte[ ]轉String會出現亂碼現象?

很顯然,就是上面提到的,編碼規(guī)范不一樣。舉個栗子,比如GB2312規(guī)范的中文“當”字,就是用0xB5,0xB1這兩個八位的數字來表示的。在英文系統(tǒng)上,沒有GB2312編碼表,給他一個0xB5,0xB1,他就傻傻的當作ASCII來處理。放到Java里,他又會按照自己的UNICODE規(guī)范來處理,所以規(guī)范不一樣,就會出現奇怪的結果,也就是亂碼。

怎么解決byte[ ]轉String的亂碼問題呢?

得看byte[]來自哪里了。時常會遇到,要把一張圖片轉為byte[]然后在轉為String流對象傳輸到別的地方,接收者再轉為byte[]再變成圖片。

1、直接傳輸byte[]的話,會出現byte[]過長數據丟失。因為不是所有的byte組合都可以映射成char。

2、用常見的Base64編碼規(guī)范吧。base64的編碼規(guī)范就是將常見的字符轉換成6位二進制表示(常用64個所以叫base64吧)。怎么寫,有現成的工具類哦如下:

import org.apache.commons.codec.binary.Base64;  
public class UtilHelper {     
    //base64字符串轉byte[]  
    public static byte[] base64String2ByteFun(String base64Str){  
        return Base64.decodeBase64(base64Str);  
    }  
    //byte[]轉base64  
    public static String byte2Base64StringFun(byte[] b){  
        return Base64.encodeBase64String(b);  
    }  
}

這樣就可以保證byte[]和String之間的標準轉換了。

關于解決java中byte[]轉成String亂碼問題的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網站題目:怎么解決java中byte[]轉成String的亂碼問題-創(chuàng)新互聯
分享URL:http://weahome.cn/article/ddshed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部