2012-04-10 11 views
7

Javaから* nixスクリプトのセットのエンコーディングをUTF-8にプログラムで変更する必要があります。私は彼らに何も書いていないので、私はこれを行う最も簡単な方法を見つけようとしています。ファイルはあまりにも多くはありませんし、それほど大きくありません。私は可能性:Javaで既存のファイルのエンコーディングを変更しますか?

  • は、エンコーディングとしてUTF-8が設定されたOutputStreamを使用して、空の文字列を「書く」
  • 私はすでに、私は読むことができる(アパッチ・コモンズから)のfileutilsを使用していますので、|これらの内容を書き込みますファイル、UTF-8をエンコードとして渡す

これまでに大したことはありませんでしたが、いずれのアプローチにも問題はありますか?

+2

と再書かれた*場合を除いて最初のBOMを必要としない通常の7ビットクリーンASCIIファイル(およびそのようなファイル) BOMはストリームとエンコードの変更をシフトします。 –

+0

しかし、UnixのデフォルトのエンコーディングはUTF-8です。私はあなたのスクリプトのエンコーディングを信じています。 – Cratylus

+0

@ user384706おそらく、非BOMストリームは多くの "テキスト"アプリケーションによってUTF-8として取られていると言う方が適切でしょう。 "デフォルトのエンコーディング"は、特定の言語/ライブラリ/ API。 –

答えて

11
要求されたよう

、あなたはコモンズにIOを使用していることから、ここでのサンプルコード(エラーが風にチェック)である:

*ファイル全体を読み込む必要があります
import java.io.File; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 

public class Main { 
    public static void main(String[] args) throws IOException { 
     String filename = args[0]; 
     File file = new File(filename); 
     String content = FileUtils.readFileToString(file, "ISO8859_1"); 
     FileUtils.write(file, content, "UTF-8"); 
    } 
} 
+0

'UTF-8'は必要ですか?とにかくJavaのデフォルトのエンコーディングは' UTF-8'だと思います。 – Cratylus

+3

ここにいくつか言いたいことがあります。まず、デフォルトはutf8ではあり得ません。また、このコードはすべてエンコードに関するものなので、明示的にすることが最善です。 http://stackoverflow.com/questions/1006276/what-is-the-default-encoding-of-jvm – daveb

+0

警告:何らかの理由で、これは数KBよりも長いファイルをカットし、本質的に特定のポイントを超えてファイルの内容を削除します –

関連する問題