[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:46381] Re: Manpage encoding: UTF-8 or EUC-JP?
こんにちは,
> > > DocBook/XML で書かれたドキュメントから日本語 manpage を吐く、
> > > Aptitude の manpage 生成系をいじっています。
> > > 変換自体は出力エンコーディングが UTF-8 でも EUC-JP でもうまくいくのですが、
> > > 自分の環境 (sarge) では、ロケールが ja_JP.EUC-JP でも ja_JP.UTF-8 でも
> > > UTF-8 の manpage はうまく表示されません。
> >
> > man -Tnippon -l XXXX.X.X
> > man -Tutf8 -l XXXX.X.X
> > あたりで確認してみるとどうですか?
>
> すみません。ちょっと確認方法がまずく、
> ロケールが ja_JP.UTF-8 の場合はうまく表示されることがわかりました。
> 他方で、EUC-JP 環境においてはうまく表示できません。
> 次のように、上川さんに提案されたオプションをつけてみても、
> 結果に変化はないようです。
>
> * LANG=ja_JP.EUC-JP → 文字化け
> * LANG=ja_JP.EUC-JP + -Tnippon → 文字化け
> * LANG=ja_JP.EUC-JP + -Tutf8 → 文字化け
> * LANG=ja_JP.UTF-8 → UTF-8 で出力
これ,手もとで文字化けしました.正確なコマンドラインはどうしていますか?
> * LANG=ja_JP.UTF-8 + -Tnippon → UTF-8 で出力
> * LANG=ja_JP.UTF-8 + -Tutf8 → UTF-8 で出力
>
> ……ということは、manpage のエンコーディングが UTF-8 の場合、
> とりあえずロケールが ja_JP.UTF-8 の場合は表示できるようですね。
> Aptitude の manpage に関しては他言語と同様 UTF-8 でいこうと思います。
> しかし他方で、
> ja_JP.EUC-JP の場合に表示できないのはやはり問題のような気もします。
man-db の 2.4.0-1 の changelog とか,
src/encodings.c を見ていると:
1. どんなlocaleであっても, jaの場合は,EUC-JP がソースエンコーディングで
あることを前提としている.
directory_entry:
{ "ja", "EUC-JP", "EUC-JP" }, /* Japanese */
2. UTF-8 manpage をおくのであれば,/usr/share/man/ja_JP.UTF-8/manX
(ピリオドがあり,その後にcharset情報がついている場合は special-case している)
char *get_page_encoding (const char *lang)
(snip)
dot = strchr (lang, '.');
if (dot)
return xstrndup (dot + 1, strcspn (dot + 1, ",@"));
ということがわかりました.こうなっていなかったらおそらくバグです.
ソース中のコメントで例として下記が書いてあります:
* /usr/share/man/ja_JP.EUC-JP, locale ja_JP.UTF-8
* page encoding = EUC-JP
* source encoding = EUC-JP
* roff encoding = UTF-8
* output encoding = UTF-8
* EUC-JP -> iconv -> UTF-8 -> groff -Tutf8 -> UTF-8
上川
--
dancer@{debian.org,netfort.gr.jp} Debian Project