byte[] 與String 轉換出亂碼問題
阿新 • • 發佈:2019-01-03
介面資料傳輸時經常把字串轉成byte[] , 經過Base64編碼處理。 這裡遇到一個問題, 轉換後中文亂碼。(開發環境正常,生產環境亂碼)
String localChartSet = System.getProperty("file.encoding"); System.out.println("localChartSet>>>>"+localChartSet); //檢視本地預設字符集 String str ="aaaa中文的"; byte[] gbkbt = str.getBytes("GB2312"); byte[] utfbt = str.getBytes("utf-8"); byte[] bt = str.getBytes(); String gbkstr= new String(gbkbt, "GB2312"); //string 與byte[] 轉換時字符集要保持一致 String utfstr= new String(utfbt, "utf-8"); str= new String(bt); System.out.println("gbkstr>>>>"+gbkstr); System.out.println("utfstr>>>>"+utfstr); System.out.println("str>>>>"+str); gbkstr= new String(gbkbt, "utf-8"); //轉換時字符集要保持一致 否則中文會出亂碼 utfstr= new String(utfbt, "GB2312"); str= new String(bt, "GB2312"); System.out.println("gbkstr>>>>"+gbkstr); System.out.println("utfstr>>>>"+utfstr); System.out.println("str>>>>"+str);
new String(gbkbt, "GB2312"); //<span style="font-size:18px;">為了防止亂碼, 儘量採用這種方式 </span>