DOS運行jar程序輸出文件中文亂碼

http://blog.csdn.net/gyz666/article/details/68065110html

個人問題和如上博客同樣即:java

問題:程序在eclipse中進行開發,涉及一些IO操做,且須要在不一樣的機子上跑,所以爲了方便,將代碼打包成了jar包。可是發如今eclipse中結果運行正確,在cmd中運行結果卻錯誤。eclipse

個人需求:從多個記事本文件中讀取數據,而後寫入一個記事本中。jvm

個人問題:寫入記事本後中文亂碼。工具

如何解決:以鍵值的形式在啓動jvm時規定一些輸入參數(cmd中執行時,只需在java後面加上-Dfile.encoding=utf-8便可編碼

形成的緣由思考:操作系統

https://jingyan.baidu.com/article/0f5fb099f170566d8334eabf.html.net

如上經驗所說:code

 因爲JDK是國際版的,在編譯的時候,若是咱們沒有用-encoding參數指定咱們的JAVA源程序的編碼格式,則javac.exe首先得到咱們操做系統默認採用的編碼格式,也即在編譯java程序時,若咱們不指定源程序文件的編碼格式,JDK首先得到操做系統的file.encoding參數(它保存的就是操做系統默認的編碼格式,如WIN2k,它的值爲GBK),而後JDK就把咱們的java源程序從file.encoding編碼格式轉化爲JAVA內部默認的UNICODE格式放入內存中。而後,javac把轉換後的unicode格式的文件進行編譯成.class類文件,此時.class文件是UNICODE編碼的,它暫放在內存中,緊接着,JDK將此以UNICODE編碼的編譯後的class文件保存到咱們的操做系統中造成咱們見到的.class文件。對咱們來講,咱們最終得到的.class文件是內容以UNICODE編碼格式保存的類文件,它內部包含咱們源程序中的中文字符串,只不過此時它己經由file.encoding格式轉化爲UNICODE格式了。當咱們不加設置就編譯時,至關於使用了參數:javac -encoding gbk XX.java,固然就會出現不兼容的狀況。htm

個人編譯:我使用編碼格式爲UTF-8的eclipse工具打包生成jar文件

個人運行:使用操做系統自帶的DOS環境(GBK編譯)解釋運行,並寫入ANSI格式的記事本

個人生成:帶有ANSI中文亂碼的文件,使用工具強行轉換爲utf-8,也會有亂碼的中文和格式

相關文章
相關標籤/搜索