!!!技術的雑談-idljコマンドで日本語が文字化け !!環境 JDK1.4.2_08、JDK1.5.0_03 WindowsXP上で確認 !!現象 idljコマンドを通すとIDLファイルに書き込んであるコメントが文字化けしてJavaのソースに反映される。 !!対処 JDK付属のidlj(.exe)というツールはIDLというCORBAでのインターフェース定義のファイルから対応するJavaのソースを自動生成してくれるツールです。 JacORBのidl(.exe)コマンドよりは幾分親切で、IDLファイルの中のコメントを適宜Javaソースにもコピーしてくれるのですが、文字化けさせてくれます。 (JacORBのidlコマンドはコメントをキレイさっぱりと削除してくれます^^;) 原因は、idljがAsciiエンコードされていないマルチバイト文字を理解できない為です。 よって、JDK付属ツールのnative2asciiを通せばちゃんと理解してくれそうです。 ……が、ちょっと落とし穴があります。 idljコマンドはご丁寧にも'''Shift-JISで'''それぞれのJavaソースファイルに日本語のコメントを入れてくれやがります。 (やってみればわかります) そこで、これを正しく元の日本語表示に「全部」戻すには以下の手順が必要です。 +もしそうでなかったら、IDLファイルの文字コードをShift-JISに変換しておく。 +IDLファイルをnative2ascii.exeでエンコード。 (native2ascii) +エンコードしたファイルをidlj.exeに食わせてjavaのソースを作成 +作成されたjavaソースにもう一回native2asciiをかけてエンコード(idlj.exeが余計なShif-JIS文字列をくっつけてくれるため、そのまま-reverseしても正しくデコードしてくれない!!) +最後に、javaソースをnative2ascii.exeに-reverseオプションをつけてデコードします 尚、ascii2nativeコマンドは既存ファイルを上書き'''しません'''。 なので、 native2ascii hogehoge.txt hogehoge.txt などとしてもエンコードしてくれません。上の例の場合、 native2ascii hogehoge.txt hogehoge.txt.tmp del hogehoge.txt ren hogehoge.txt.tmp hogehoge.txt とすれば目的が達せられるでしょう。 !!履歴 2005/7/14 -- 初版 [[技術的雑談]]へ戻る !!突っ込み {{comment}} [[技術的雑談]]へ戻る {{trackback}} [[技術的雑談]]へ戻る