2013-04-15 21 views
0

我需要轉換的源文件的編碼在一個完整的Java項目。目前它配置爲cp-1252,我需要它是utf-8。然而,也有.java, .css, .js, .jsp, .jspf, .properties, .you-name-it地段,並用手在記事本說這樣做或什麼是很繁瑣的。有沒有一種自動化的方式來做到這一點?我試圖從現有的項目中做出一個項目,但它不起作用(不是我對此非常有希望)。是否有自動的方式來改變項目的源文件的編碼?

我需要的東西,讓我用手做同樣的:

  • 在文本編輯器
  • 「另存爲」的文件 - 更改編碼屬性
  • 重複

回答

1

在java中,你可以放入字符串CP-1252這種方式編碼的文件的內容:

FileInputStream inputStream = new FileInputStream(file); 
String text = new Scanner(inputStream, "cp-1252").useDelimiter("\\A").next(); 
inputStream.close(); 

然後您可以將字符串text寫入使用UTF-8這種方式編碼的文件:

FileOutputStream outputStream = new FileOutputStream(file); 
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "utf-8"); 
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); 
bufferedWriter.append(text); 
bufferedWriter.close(); 

自動執行過程中,您可以創建一個從上面的代碼的方法,並調用它利用找到的每個文件java File.listFiles()方法(雖然我會在之前進行備份)。

+0

酷,我希望能不重新發明輪子(特別是一個已經測試輪),即一個內置的工具。如果沒有這樣的事情,我會接受答案。謝謝! – Roger

2

我會用iconv工具,用短的shell腳本或者一個find呼叫相結合。 Linux和Windows存在構建版本(例如,請參閱this page上的鏈接)。也可能用於其他操作系統。

編輯:也this related question見。

+0

我需要它的Windows。我明天會試試這個。需要看看如何使腳本,我目前不是一個命令línea傢伙:)。你知道文件是否不會以任何方式被破壞,比如弄亂代碼縮進? – Roger

+0

@Roger文件的結果將是垃圾,如果原文件沒有在Windows 1252編碼,否則沒有。 – Esailija

相關問題