免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
properties亂碼,Transparent native

1. 遇到的問題

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

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

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

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

3. 配置編碼

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

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

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

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

4. Transparent native-to-ascii conversion

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

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

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

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

所以這也是為什么設(shè)置properties編碼格式無所謂的原因了,因?yàn)楸4娴淖址际莂scii碼表中的字符。

==而當(dāng)Java去讀取properties時(shí),也會(huì)將自動(dòng)將\uxxx的Unicode轉(zhuǎn)成對(duì)應(yīng)的char。==

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

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

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

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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Eclipse插件Properties Editor(中文與Unicode等互轉(zhuǎn))
native2ascii 轉(zhuǎn)碼格式
「計(jì)算機(jī)原理」為什么編碼有ASCII、Unicode、UTF
【Python面試】 說說4種常用編碼的區(qū)別?
幫你搞清ASCII、Unicode和UTF-8區(qū)別,拿走不謝
利用eclipse編輯中文資源文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服