首頁  >  文章  >  Java  >  java string亂碼

java string亂碼

angryTom
angryTom原創
2019-11-18 10:22:394165瀏覽

java string亂碼

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn