1. 問題情形
操作系統(tǒng):Windows10中文版
IDE:Eclipse 2022-12
開發(fā)語言:Java & JDK19
項目編碼:UTF-8
寫了一個很簡單地main方法,打印出中文,結果出現(xiàn)了亂碼的情形,如下圖:
2. 分析和解決過程
2.1 修改項目編碼為GBK
上網(wǎng)搜索了很多解決方式,大部分都是說要更改項目的字符編碼集。如下圖:
按照網(wǎng)上的說法將項目的編碼字符集由UTF-8更改為了GBK,一番倒騰(具體倒騰過程就不贅述了),也確實能夠將亂碼問題解決。但總覺得就這樣將問題解決是給人一種知其然但不知其所以然的感覺。
難道遇到亂碼問題就只能將項目的字符編碼集更改為GBK嗎?如果項目實在是需要采用UTF-8字符集進行編碼該怎么辦呢?畢竟現(xiàn)在大家通用的都是采用UTF-8字符集進行編碼。所以必須要再進一步研究該問題中的亂碼情形的深層次原因。
2.2 還原亂碼情形
其實亂碼的本質是很好理解,字符串在網(wǎng)絡和計算機中都是以字節(jié)碼的形式進行傳遞和存儲的,如果出現(xiàn)亂碼,就說明字符串在進行編碼時所使用的字符集和解碼時所使用的字符集是不一致的。
針對本文中出現(xiàn)亂碼的原文“你好,世界杯!”,我在站長工具中做了一番倒騰和測試,還原出了本文中出現(xiàn)亂碼的情形。
2.2.1 將原文進行GBK編碼
2.2.2 將編碼后的結果重新進行UTF-8解碼
解碼后的結果:
由此可以推斷出,Eclipse中出現(xiàn)的亂碼情形的原因和邏輯是這樣的:
2.2.3 分析
由于對Eclipse的工作原理了解有限,所以我無法知道Eclipse是怎樣將源代碼中的中文原文輸出到控制臺的,但由以上的情形演示可以肯定:Eclipse在將中文原文輸出到控制臺的過程中,肯定存在將原文進行GBK編碼的過程。
但為什么要采用GBK編碼呢?我的項目不都是采用UTF-8編碼的嗎?
于是我只能憑著直覺大膽猜測:每個操作系統(tǒng)應該也是有自己的字符編碼集的,我的操作系統(tǒng)的字符編碼集會不會是GBK,而Eclipse就是根據(jù)操作系統(tǒng)的字符編碼集對原文進行編碼操作的?
經(jīng)過在網(wǎng)上搜索,搜到了更改Windows10的字符編碼集的操作過程,我的操作系統(tǒng)的字符編碼集并非UTF-8,應該就是GBK。
2.2.4 解決方式一
2.2.4.1 按Win鍵,然后點擊“設置”
2.2.4.2 輸入“語言設置”,選擇“語言設置”
2.2.4.3 將鼠標拉倒界面底部,選擇“管理語言設置”
2.2.4.4 點擊選擇“管理 => 更改系統(tǒng)區(qū)域設置”
2.2.4.5 勾選“Beta 版…”,然后點擊“確定”
如果“Beta 版…”勾選項未被勾選,則表示操作系統(tǒng)的字符編碼集并非UTF-8。
2.2.4.6 重啟計算機
2.2.4.7 最后在保證項目編碼為UTF-8的情形下重新打印輸出,問題解決
這個時候如果再將項目編碼改為GBK,然后重新編輯源代碼進行打印輸出,反而會出現(xiàn)另一種亂碼情形!各位碼友可以自行驗證。
2.2.5 解決方式二
2.2.5.1 設置執(zhí)行時的編碼方式
也可以不用配置操作系統(tǒng)的字符編碼集,直接在Eclipse里面進行相應的設置就可以解決亂碼問題,過程如下:文章來源:http://www.zghlxwxcb.cn/news/detail-783363.html
- 右擊要被執(zhí)行的Class,選擇Run Configurations…,如下圖:
- 進入配置界面以后,選擇Class被執(zhí)行時的編碼,如下:
- 重新執(zhí)行Class的main方法,亂碼問題解決:
- 小結
首先,該方法必須在每次執(zhí)行新的Class的main方法時,都必須進行相應的字符編碼配置,配置完以后,下次執(zhí)行時就不需要重新配置。其次,如果main方法中引用了其它的Class類,而被引用的Class類又涉及到了中文輸出,則相應的中文輸出也會出現(xiàn)亂碼,且通過這種配置方式無法解決。這種配置的深層次原因和邏輯為何本人也不了解,請對這種配置方式有深入了解的碼友在評論區(qū)留言。
3. 總結
在Windows10系統(tǒng)中,Eclipse里面的項目的字符編碼集必須與操作系統(tǒng)的字符編碼集保持一致,這樣在控制臺的輸出才不會出現(xiàn)亂碼。
Windows10系統(tǒng)中的情形就是這樣,各位碼友若能給出其它更深層次的原因的解釋,或者對其它操作系統(tǒng)的相似情形有所了解,則請在評論區(qū)留言!文章來源地址http://www.zghlxwxcb.cn/news/detail-783363.html
到了這里,關于Windows10環(huán)境下的Eclipse控制臺輸出中文亂碼的問題的解決的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!