トップ 一覧 検索 ヘルプ RSS ログイン

技術的雑談-idljコマンドで日本語が文字化けの変更点

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

[[技術的雑談]]へ戻る