- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-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}}
[[技術的雑談]]へ戻る