java string亂碼
#問題出在預發、生產和本地環境的系統編碼方式不一致,本地系統預設是UTF-8,而預發、生產環境預設是GBK編碼,因此導致亂碼出現。
如果不指定編碼方式,則預設以系統的編碼方式。
String csn = Charset.defaultCharset().name(); try { // use charset name decode() variant which provides caching. return decode(csn, ba, off, len); } catch (UnsupportedEncodingException x) { warnUnsupportedCharset(csn); } try { return decode("ISO-8859-1", ba, off, len); } catch (UnsupportedEncodingException x) { // If this code is hit during VM initialization, MessageUtils is // the only way we will be able to get any kind of error message. MessageUtils.err("ISO-8859-1 charset not available: " + x.toString()); // If we can not find ISO-8859-1 (a required encoding) then things // are seriously wrong with the installation. System.exit(1); return null; } System.getProperty("file.encoding") //查看系统默认编码方式
解決方法如下:
1、使用string時進行轉碼
System.out.println(str); String str1 = new String(str.getBytes("ISO-8859-1"), "utf-8"); System.out.println(str1); String str2 = new String(str.getBytes("gb2312"), "utf-8"); System.out.println(str2); String str3 = new String(str.getBytes("gbk"), "utf-8"); System.out.println(str3);
2、將亂碼的字串進行轉碼
String decodeStr=null; decodeStr = URLDecoder.decode(url, "utf-8");
因此在使用String的時候,無論encode 或者decode都要指定編碼方式,否則就和系統環境耦合了。
php中文網,大量的免費Java入門教學,歡迎線上學習!
以上是java string亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!