テキストファイルの文字コードの変換ツール

Shift-JISからCP930(IBM930)へのテキストファイル変換が必要になったので、Javaでいろいろ試したものの、手続きがめんどくさかったり、マルチバイト文字列とかがうまく変換できなかったり、トラブルが多い(;´∀`)。

Unix環境なら色々と選択肢もあるかと思いますが、Windows環境で手軽にイケる手段が割と少ない。
vbsによる変換ではUTFやSJIS,EUCなどの代表的な文字コード間の変換はできるものの、マイナーな文字コードには対応してなかったりして意外と面倒なんですよね。

んで、Groovyで同じ処理を書いてみました。

// 引数が4つでない場合、Usageを表示
if(args.length != 4){
println "Usage:"
println "groovy FileEncodeConverter.groovy inputFile inputCharset outputFile outputCharset"
return
}

// 変換前・後の文字コード
String srcEncode = args[1]
String destEncode = args[3]

// ファイル名の指定
File srcFile = new File(args[0])
File destFile = new File(args[2])

println "変換前(" + srcEncode + "):"
println srcFile.getText(srcEncode)

// 変換&ファイル書込
destFile.write(srcFile.getText(srcEncode), destEncode)

println "変換後(" + destEncode + "):"
println destFile.getText(destEncode)

引数に指定された入力エンコードでファイルを読み込んで、指定された出力エンコードでファイルを出力するカンタンな処理。
一応、確認のために標準出力に変換前後の文字を出してます。

わりとサクッと実装できたのでGroovyって楽でいいなぁと思った次第。