亂碼日常小總結

2021-08-09 08:10:19 字數 2143 閱讀 9696

前段時間有個小夥伴遇到乙個問題,就是在讀取專案中的配置檔案中的,讀取出來的中文出現中文亂碼,中文變成了????問號。對於中文亂碼是我們在日常開發之中經常遇到的問題,對於亂碼問題的解決對於小夥伴來說可能是比較頭痛的事,這裡借這個點來和大家一起學習總結一下日常開發中的亂碼。

首先上**,看看小夥伴的亂碼是怎麼回事。其實是在乙個讀取配置檔案的工具類中,對於配置檔案中讀取出來的中文出現了中文亂碼,這裡簡單模擬一下小夥伴的工具類實現,**如下

/**

*@author 愛琴孩

* 讀取properties配置檔案中的資料

* */

public

class

test

string name=p.getproperty("name");

system.out.println("沒有轉碼之前:"+name);

system.out.println("進行轉碼之後:"+new string(name.getbytes("iso-8859-1"),"utf-8"));

} catch (ioexception e)

}public

static

void

main(string args)

}

如上所示,讀取conf.properties配置檔案中的配置資訊,具體的配置檔案中的內容很簡單,如下所示

這裡需要注意,我用的是eclipse,在eclipse中,對於這個配置檔案的預設編碼格式是iso-8859-1,可以在eclipse中檢視

由於是iso-8859-1編碼格式,所以conf.propertites中的中文會以unincode來儲存顯示。這樣在工具類中讀取conf.properties中的中文的時候,可以直接讀取,不需要再轉碼了。但是小夥伴的工具類進行了iso-8859-1和utf-8轉碼,所以讀取出來的中文就出現了亂碼。

讀取結果如下

當然在eclipse中,我也可以手動設定檔案的編碼格式,例如修改為utf-8,修改如下

修改conf.properties檔案如下

由於這時候配置檔案的編碼格式是utf-8,這時候在讀取的時候,中文就要進行轉碼了,所以這時候讀取結果如下

通過上面簡單的設定,想必大家都清楚了小夥伴的亂碼是什麼原因了。需要注意的一點,在eclipse中設定編碼格式之後,對已經寫好的檔案,不會更改檔案原本的編碼格式,需要自己重新寫入資料。否則新設定的編碼格式是沒有效果的。

對於上面的亂碼出現,可以歸結於對ecplise中預設的編碼格式不熟悉導致,在日常開發中經常會出現各種亂碼,而亂碼出現大的本質就是編碼和解碼不一致導致的。所以我麼應該知道乙個工具或者系統的預設編碼格式,這樣就可以避免一些比較常見的亂碼!像tomcat中處理請求的預設編碼格式就是iso-8859-1,所以有時候我們在瀏覽器中傳送get請求,請求後面附帶的中文引數就會被tomcat解析不一致,就會出現亂碼。這時候就需要手動修改tomcat中的配置檔案,設定tomcat的預設編碼為utf-8。當然還有post請求亂碼。。這個就需要在web.xml通過過濾器設定編碼格式了。還有在日常的jsp頁面中也需要設定編碼格式,如果沒有設定,頁面就會根據瀏覽器本身設定的編碼格式來解析。這時候如果不一致的話,就會導致亂碼出現,還有資料庫經常也會出現亂碼。等等,所以這些小細節需要我們在日常開發自己多總結!

這裡推薦一篇對亂碼講的還可以的部落格 ,這裡對亂碼的本質講解的很好。

有的小夥伴可能對utf-8和unicode不太熟悉,這篇文章講的很詳細,也可以看看

總結 日常總結

最近變得浮躁了,學不進了,那就寫總結吧。關於刷題 從去年十一月份到現在,感覺唯一堅持的意見事情就是刷力扣了。四個多月,寫了六百多道題,大概有四五題一天,然後也在堅持參加周賽。很多時候,有些事情成了習慣,那麼也就不需要去堅持了。比如說現在,每天都是先把每日一題和劍指 offer 的任務完成了再開始做其...

日常小知識

關閉php警告報錯 error reporting 0 linux查詢檔案命令 find name print 獲取網頁內容 file get contents url 開啟mysql 慢查詢 log slow queries long query time 1 log long format 開啟...

歸納 日常小任務

任務 蒐集整理關於 多元影像資料 自適應鑲嵌 的資料 了解 多元遙感影象 根據不同的感測器所獲取的遙感影像,進行處理之後得到多源遙感影像 自適應 就是裝置會根據外部的鏈結 或者調解自動調解到恰當的引數,以便設配可以順暢執行 指處理和分析過程中,根據處理資料的資料特徵自動調整處理方法 處理順序 處理引...