首頁 > Java > Java基礎 > 主體

java string亂碼

angryTom
發布: 2019-11-18 10:22:39
原創
4153 人瀏覽過

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!