« 右クリックでトラックバック送信 改定版 (暫定リリース)(BlogPet) | トップページ | 今週のお買い物 (2005.08.28~09.03) »
2005.09.02
doxygen 日本語文字化け対策 その2
「doxygen 日本語文字化け対策」で提示した対策だけでは、まだ文字化けが発生するパターンが存在することがわかりました。
//!< ソフトウェア (「ソ」の2バイト目が 0x5c)
のように、
- (Shift_JIS 使用時に)2バイト目が 0x5c になる文字が最初に出現する語句を使う場合、かつ
- 当該語句の直前に置かれている空白文字の数が2個以上のとき
に文字化けが発生することが判明しました。直前の空白文字が1個のときは化けませんし、語句の先頭以外のところに「2バイト目が 0x5c になる文字」が存在する場合も化けません。なぜか、「2バイト目が 0x5c になる文字」が語句の先頭にあり、当該語句の直前にある空白文字が2個以上のときのみ、文字化けが発生するのです。
つまり、直前に置く空白文字を1個にすれば、とりあえずは文字化けを回避できます。
この文字化けが発生している原因は、doctokenizer.cpp (doctokenizer.l) の YY_DECL を呼び出す直前、もしくは YY_DECL 内のどこかにあるところまでは絞ったのですが、そこから先がまだわかっていません。「doxygen 日本語文字化け対策」の commentscan.cpp と同様の修正を施しても解決せず。というか、修正前は「2バイト目が 0x5c になる文字」の 0x5c が欠落することによる文字化け発生だったのが、修正後は「2バイト目が 0x5c になる文字」の直後に来る文字の1バイト目が欠落して文字化けが発生するという、微妙に違う現象になります。「ソ\フトウェア」のように表記することで文字化けを防ぐことができるようになりますが、わざわざ '\' を入れるのが不自然すぎます。普通にコメントとして読むにも美しくないですし。
ということで、今のところちゃんとした解決策は不明です。原因がわかって対処できるようになるまでは、「直前に置く空白文字を1個にする」ことで、文字化けを回避することにします。解決策がわかった人がいたら、教えてください。(→ 「doxygen 日本語文字化け対策 その3」にて解決しました)
関連記事
投稿者: tsupo 2005.09.02 午後 11:10
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: doxygen 日本語文字化け対策 その2:
» doxygen 日本語文字化け対策 その3 from 観測気球
ようやく Shift_JIS 使用時に発生する doxygen の文字化けを完全に退治することができました。 続きを読む