1. 程式人生 > >更改JDK默認編碼,解決DBeaver亂碼問題

更改JDK默認編碼,解決DBeaver亂碼問題

DBeaver 亂碼

之前存在,在DBeaver中添加漢字註釋後,選擇另存為後,註釋的漢字出現亂碼問題?

解決方法:在環境變量中添加JAVA_TOOL_OPTIONS選項,添加參數-Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US,這樣JDK的提示就是英文的,系統輸出的中文也能正常顯示了,適用於Java/Scala程序,Python也有類似的環境變量PYTHONIOENCODING.
技術分享圖片
配合這裏的修改後,基本不會再有亂碼出現了。
下面說下為什麽會出現亂碼問題?
首先,亂碼問題,不是無法解決的 問題。大家不要恐慌。亂碼問題是因為字符集不同而產生的。
更專業點來說就是:計算機編碼(字符集)。計算機編碼是計算機代表字母和數字的方式(計算機不認識我們的文字語言。只認識0和1兩個字符。這裏就需要計算機編碼轉化為0和1。)這樣我們就不會為使用計算機而學習計算機底層的生澀的低級語言(如匯編),只需要熟悉簡單的鍵盤輸入,計算機自己就完成了信息從輸入到輸出,把結果呈現給我們。

常見的編碼方式有:ASCII編碼,GB2312編碼(簡體中文),GBK,BIG5編碼(繁體中文),ANSI編碼,unicode,utf-8編碼等
我們來談下,這些的由來。最早。計算機就美國那幾個大學在用。美國人輸入鍵盤上的字符就足夠了。所以誕生了ASCII編碼,而且那時候的磁盤很小。而ASCII編碼只占用一個字節(8個二進制位)。後來,美國人要讓全世界都用計算機。可是,每個國家都有自己的文字。總不能全世界都用英語把。那樣計算機的門檻那樣高,你讓不會英語的人事,怎麽辦?就有了後來的GBK,UTF-8等計算機編碼。他們的產生,是的計算機可以把全世界絕大多數的語言文字都收錄進去。才有了今天,中國人可以在計算機上輸入中文。德國人可以輸入德文。韓國人可以使用韓文操作計算機。當然,這得益於硬盤存儲空間的增大。現在的這些計算機編碼占2個字節(16個二進制位)。
現在,說說為什麽會產生亂碼?
由於計算機編碼(字符集)的增多,大家可供選擇的字符集就增多。所有造成了。各種軟件和系統對計算機編碼(字符集)的默認選擇就不同。這是亂碼的本源。
因為不同的發音在不同的語言中有截然不同的效果。同樣適用於不同的字符在不同的計算機編碼(字符集)下產生效果不一樣。
打個比方:英文的who 是誰的意思。中文的hu 是窗戶的戶。還有就是上海的簡稱(滬)。這個例子就說明白了。不同字符在不同字符集中的效果了吧。

更改JDK默認編碼,解決DBeaver亂碼問題