file.encoding到底指的是什么呢?
?
轉(zhuǎn)載請注明來源:http://blog.csdn.net/loongshawn/article/details/50918506
- 《Java利用System.getProperty(“file.encoding”)獲取編碼分析》
- 《Linux中的特殊文件-/dev/zero》
- 《Linux中的黑洞(black hole)-/dev/null》
1.0 背景
System.out.println(System.getProperty("file.encoding"));?
以前一直以為file.encoding的編碼就是系統(tǒng)的編碼,直到最近碰見一個(gè)怪異的情況:WEB工程中通過上述代碼打印出來的編碼是GB18030,而登錄Linux服務(wù)器執(zhí)行l(wèi)ocale或者vi /etc/sysconfig/i18n查出來的編碼是UTF-8,竟然兩者不一致,一度懷疑是不是服務(wù)器編碼變了,引發(fā)了這篇文章的思考。
2.0 file.encoding編碼是什么
file.encoding的值保存的是每個(gè)程序的main入口的那個(gè)java文件的保存編碼,是.java文件的編碼。
以下兩種方式查驗(yàn):
1、點(diǎn)擊java文件–>屬性–>text file encoding(other的值),使用eclipse 編譯器,我查看的這個(gè)類IDE顯示的是UTF-8編碼。
2、通過運(yùn)行java類來獲取該編碼。
public static void main(String[] args){System.out.println(System.getProperty("file.encoding")); }運(yùn)行結(jié)果如下,圖中顯示編碼為UTF-8,說明和IDE中顯示的一致:
如果把這個(gè)文件的編碼改成ISO-8859-1,看看顯示的是什么編碼?
上圖中還是原來的那個(gè)java類,只不過編碼類型改成了ISO-8859-1,記住我的本地機(jī)器的編碼為UTF-8,看看其運(yùn)行結(jié)果:
結(jié)果仍然是ISO-8859-1,可見file.encoding獲取的僅僅是main入口函數(shù)的文件編碼,并非是系統(tǒng)編碼。
3.0 file.encoding編碼是唯一的么
是不是每個(gè)java類型都有一個(gè)這個(gè)編碼,下面我們測試一下,分別有兩個(gè)類:
Test.java 采用ISO-8859-1文件編碼:
public class Test {public static void printEncoding(){ System.out.println(System.getProperty("file.encoding")); } }FileUpload.java 采用UTF-8文件編碼:
public class FileUpload {public static void main(String[] args){ System.out.println(System.getProperty("file.encoding")); Test.printEncoding(); } }預(yù)想,應(yīng)該輸出:UTF-8和ISO-8859-1。
實(shí)際輸出:
UTF-8 UTF-8從實(shí)際輸出可以看出,file.encoding是唯一的,與main入口函數(shù)的java類文件編碼保持一致。
http://blog.csdn.net/loongshawn/article/details/50918506
?
總結(jié)
以上是生活随笔為你收集整理的file.encoding到底指的是什么呢?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之List和Tuple类型(
- 下一篇: parasoft Jtest 使用教程: