Java使用UTF-8或GBK編碼后還是亂碼問題的解決辦法
前言
大家在開發(fā)中可能經(jīng)常遇到將String字符串轉(zhuǎn)為byte[]的場景,為了避免中文亂碼,一般指定字符集為GBK或UTF-8來進行編碼以及解碼,但是如果使用不當(dāng),同樣會造成字符集亂碼問題。
主要原因是進行編碼以及解碼的字符集不一致導(dǎo)致
所以,在解決字符集亂碼問題時一般情況下會顯示指定編碼和解碼字符集。
// 編碼 byte[] bytes = “中文”.getBytes(“UTF-8”); // 解碼 new String(bytes,“UTF-8”);
不顯式指定時一般會使用默認字符集進行編碼或解碼,此時需要確保使用的獲取默認字符集的方法一樣。
// 編碼 獲取默認字符集方法為:Charset.defaultCharset().name() byte[] bytes =“中文”.getBytes(); // 解碼 獲取默認字符集方法為:Charset.defaultCharset().name() new String(bytes);
以下列出兩種獲取默認字符集的方法及區(qū)別:
Charset.defaultCharset().name();
System.getProperty("file.encoding")
兩者的區(qū)別是:
- **Charset.defaultCharset()**通過在JVM啟動時通過
-Dfile.encoding=UTF-8
參數(shù)來進行設(shè)置。此方式只支持在jvm啟動時設(shè)置一次,不支持在運行期修改。 - System.getProperty(“file.encoding”) 獲取的是操作系統(tǒng)的編碼,可以通過
System.setProperty("file.encoding","UTF-8")
進行修改(此修改不會影響操作系統(tǒng),重啟jvm后丟失),支持在運行期修改。
總結(jié)
到此這篇關(guān)于Java使用UTF-8或GBK編碼后還是亂碼問題的解決辦法的文章就介紹到這了,更多相關(guān)Java字符集亂碼問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于SpringBoot創(chuàng)建存儲令牌的媒介類和過濾器的問題
這篇文章主要介紹了SpringBoot創(chuàng)建存儲令牌的媒介類和過濾器的問題,需要在配置文件中,添加JWT需要的密匙,過期時間和緩存過期時間,具體實例代碼參考下本文2021-09-09springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解
這篇文章主要為大家介紹了springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11