小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

properties亂碼,Transparent native

 一本正經(jīng)地胡鬧 2019-12-08

1. 遇到的問題

properties中配置的國際化資源引發(fā)的亂碼問題

2. 亂碼產(chǎn)生的原因

默認情況下,項目中的配置文件編碼跟隨系統(tǒng)。

如下圖,==配置文件跟隨系統(tǒng)為GBK編碼,而Java默認是以ISO-8859-1的編碼讀取配置的,所以會出現(xiàn)亂碼==。解決方式是勾選Transparent native-to-ascii conversion,將所有字符轉(zhuǎn)成ascii編碼保存(實際上就是轉(zhuǎn)成unicode轉(zhuǎn)義序列)

3. 配置編碼

官方文檔。
https://www./help/idea/settings-file-encodings.html

從上圖可以看到配置編碼的地方有4個:
1. Global Encoding:UTF-8
2. Project Encoding: System Default
3. File/Directory Encoding: UTF-8
4. Properties files Encoding:System Default

前三個是配置項目中文件的編碼,不包括properties配置文件。
這三個選項存在優(yōu)先級,高優(yōu)先級的覆蓋低優(yōu)先級的。
可以看到File/Directory Encoding中配置了整個項目的根目錄為UTF-8,覆蓋了Project Encoding的GBK。
所以一般這三個配置我們一般都不用管,idea會自動配置File/Directory Encoding: UTF-8。

另外就是properties文件的單獨配置,默認情況下跟隨系統(tǒng)。

4. Transparent native-to-ascii conversion

Properties文件后面還跟隨著一個復選框Transparent native-to-ascii conversion。直接翻譯過來則是透明的將本地編碼轉(zhuǎn)成ascii編碼,==本質(zhì)上調(diào)用的是jdk bin目錄下的native2ascii.exe==。

從官方文檔上描述,選擇properties編碼格式和勾選Transparent native-to-ascii conversion這兩個操作是二選一,并且不是特殊情況下,這個復選框都應該勾選。(nmb你就默認不勾選)

如果勾選了復選框,那么前面的properties編碼格式就無所謂了,因為Transparent native-to-ascii conversion這個功能會將我們輸入的所有字符轉(zhuǎn)換成Unicode序列碼保存,例如我們輸入“登陸”兩個字符,實際上保存到properties時保存的是它的Unicode序列碼。

如圖,在idea中輸顯示是中文,用sublime打開之后發(fā)現(xiàn)是Unicode序列碼。

所以這也是為什么設(shè)置properties編碼格式無所謂的原因了,因為保存的字符都是ascii碼表中的字符。

==而當Java去讀取properties時,也會將自動將\uxxx的Unicode轉(zhuǎn)成對應的char。==

雖然說設(shè)置properties編碼格式的編碼格式是無所謂的,但是我們還是要將他設(shè)置成UTF-8以防出現(xiàn)其他意外。
例如文件一開始是以GBK創(chuàng)建的,并沒有勾選Transparent native-to-ascii conversion,后面再勾選上這個復選框時,不會自動將中文轉(zhuǎn)成Unicode,而且我們也看不出來這個錯誤。
但是我們再將編碼改成UTF-8時,我們就會發(fā)現(xiàn)亂碼了,我們就知道其實這些中文并沒有轉(zhuǎn)成unicode。所以一般情況下我們需要同時設(shè)置文件編碼為UTF-8并勾選復選框,或者設(shè)置文件編碼為ISO-8859-1也是可以的。

但是無論如何,Transparent native-to-ascii conversion是必須勾選的,除非你保證properties中不會出現(xiàn)ASCII以外的字符。

5. 為以后的項目也采用這個編碼設(shè)置

我們通過setting修改的編碼實際上只在當前項目生效,這也是為什么idea默認的.gitignore文件沒有忽略.idea目錄。
如果需要以后創(chuàng)建的項目也生效,我們需要從other setting中設(shè)置。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多