トップ 差分 一覧 ソース 検索 ヘルプ 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ソースファイルに日本語のコメントを入れてくれやがります。
(やってみればわかります)

そこで、これを正しく元の日本語表示に「全部」戻すには以下の手順が必要です。

  1. もしそうでなかったら、IDLファイルの文字コードをShift-JISに変換しておく。
  2. IDLファイルをnative2ascii.exeでエンコード。 (native2ascii)
  3. エンコードしたファイルをidlj.exeに食わせてjavaのソースを作成
  4. 作成されたjavaソースにもう一回native2asciiをかけてエンコード(idlj.exeが余計なShif-JIS文字列をくっつけてくれるため、そのまま-reverseしても正しくデコードしてくれない!!)
  5. 最後に、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 -- 初版

技術的雑談へ戻る

 突っ込み

name   comment  
URL (入力するとす ぱ むとみなします!)


技術的雑談へ戻る

TrackBack

TrackBack URL for this entry:
http://www.himajin2001.com/fswiki/tb.cgi/%B5%BB%BD%D1%C5%AA%BB%A8%C3%CC%2Didlj%A5%B3%A5%DE%A5%F3%A5%C9%A4%C7%C6%FC%CB%DC%B8%EC%A4%AC%CA%B8%BB%FA%B2%BD%A4%B1

技術的雑談へ戻る

最終更新日時:最終更新時間:2005年07月14日 14時11分35秒
トップページに戻る