DOXYFILE_ENCODING について実験してみた
Doxygen の設定項目 DOXYFILE_ENCODING は、設定ファイル Doxyfile 自体のエンコーディングを指定するためのパラメータです。マニュアルによると、デフォルトはUTF-8で、この項目に到達するとそれ以降の部分は指定されたエンコーディングとして処理されるとのことです。使用可能な形式は、libiconv が対応する形式です。昔は UTF-8 と ASCII (ISO-8859-1 だったかも) しか対応していなかった時代があったような気がする(6/11追記: Graphviz の charaset 設定と勘違いしてました)のですが、その情報を見つけることはできませんでした。(まあ過ぎたことだしどうでもいいや。)
Doxywizard の Expert にも DOXYFILE_ENCODING を設定する欄があります。ということは、いつの間にか、doxywizard も各種エンコーディングに対応するようになったのでしょうか。これは試してみなければ。
まずは準備として、プロジェクト名を日本語にした Doxyfile を作成します。これは特に問題無く処理できます。
次に、 DOXYFILE_ENCODING を cp932 に変更してみました。この状態で、 Doxyfile を保存し、ファイルの状態を確認してみます。保存されたファイルのエンコーディングは UTF-8 でした。この状態で実行させると次のようなエラーが表示されました。
Error: failed to translate characters from cp932 to UTF-8: Illegal byte sequence
DOXYFILE_ENCODING を変えたところで、 doxywizard が doxygen に送るものは相変わらず UTF-8 で、cp932 には有り得ない文字コードが来てしまったというところでしょうか。
それでは、ということで Doxyfile を cp932 に変換し、doxywizard に読み込ませてみました。そうすると、表示されるプロジェクト名が既に文字化けしています。とても駄目っぽい雰囲気です。 Doxywizard は UTF-8 のファイルの読み書きにしか対応していないのでしょう。それでも、表示がおかしいだけで無変換ならもしかしたら、と実行してみました。さっきと同じエラーメッセージが表示されました。やはり読み込んだバイト列のまま無変換なわけではなく、データが壊れてしまうようです。
ここで、疑問に思いました。もしかして、やはり私の記憶通りで、 UTF-8 と ASCII 以外対応してないのでは?
そこでコマンドラインから doxygen を実行して cp932 に変換した doxyfile を読み込ませてみました。結果は正常に実行されました。
ついでに UTF-8 で書かれている方のファイルもコマンドラインから試してみました。こちらは当然ながらエラーとなりました。
結論:
- Doxywizard を使う場合は、 DOXYFILE_ENCODING は UTF-8 以外にはできない。
- コマンドラインから doxygen を実行する場合は、 DOXYFILE_ENCODING と実際の内容を一致させれば他のエンコーディングでもOK。
| 固定リンク
« “日本刀”仕様も!梅雨をしのぐ「ユニーク傘」の魅力 - 東京ウォーカー | トップページ | 東日本ではお好み焼きは“ご飯の敵”! ふりかけ論争では男女に差:RBB NAVi (ブロードバンドコンテンツ 検索サービス) 2009/06/19 »
この記事へのコメントは終了しました。
コメント