file.encoding到底指的是什么呢?
?
轉載請注明來源: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的編碼就是系統的編碼,直到最近碰見一個怪異的情況:WEB工程中通過上述代碼打印出來的編碼是GB18030,而登錄Linux服務器執行locale或者vi /etc/sysconfig/i18n查出來的編碼是UTF-8,竟然兩者不一致,一度懷疑是不是服務器編碼變了,引發了這篇文章的思考。
2.0 file.encoding編碼是什么
file.encoding的值保存的是每個程序的main入口的那個java文件的保存編碼,是.java文件的編碼。
以下兩種方式查驗:
1、點擊java文件–>屬性–>text file encoding(other的值),使用eclipse 編譯器,我查看的這個類IDE顯示的是UTF-8編碼。
2、通過運行java類來獲取該編碼。
public static void main(String[] args){System.out.println(System.getProperty("file.encoding")); }運行結果如下,圖中顯示編碼為UTF-8,說明和IDE中顯示的一致:
如果把這個文件的編碼改成ISO-8859-1,看看顯示的是什么編碼?
上圖中還是原來的那個java類,只不過編碼類型改成了ISO-8859-1,記住我的本地機器的編碼為UTF-8,看看其運行結果:
結果仍然是ISO-8859-1,可見file.encoding獲取的僅僅是main入口函數的文件編碼,并非是系統編碼。
3.0 file.encoding編碼是唯一的么
是不是每個java類型都有一個這個編碼,下面我們測試一下,分別有兩個類:
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(); } }預想,應該輸出:UTF-8和ISO-8859-1。
實際輸出:
UTF-8 UTF-8從實際輸出可以看出,file.encoding是唯一的,與main入口函數的java類文件編碼保持一致。
http://blog.csdn.net/loongshawn/article/details/50918506
?
總結
以上是生活随笔為你收集整理的file.encoding到底指的是什么呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之List和Tuple类型(
- 下一篇: c# 物资积累