標籤: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亂碼問題