先日書こうと思っていた技術ネタは解決。
CentOS5.0でシステム文字コードをUTF-8からEUC-JPに変えている環境で、manが文字化けする問題について。
ぐぐるさんに聞いてみても、みんなEUC-JPからUTF-8に変えた場合の文字化け解決方法ばかりで、逆方向がなかった。
PAGERを入れ替えたり、nroffのオプションをいじってみたり、いろいろしてたのだが一向に解決せず。
落ち着いて深呼吸したらman.confの
JNROFF /usr/bin/groff -Tnippon -mandocj
を
JNROFF nkf -e | /usr/bin/groff -Tnippon -mandocj
に変えるだけでよかった。
うーん、いまいち仕組みが分かってないんだけど、もともとの後者の問題は
man(EUC-JP)→nroff(EUC-JP)→less(EUC-JP)→表示(UTF-8)文字化け
なのかね。
だとしたら前者の問題は、システム文字コードをEUC-JPにしてるんだから、そのまま表示してくれたらいいだけなのになぜが文字化け。
nroffの前にnkfで文字コードを変換する必要があるってことは、manの内容はUTF-8で書かれてるんだろうか?
どっかでmanはEUC-JPだから、EUC-JPで書かれているmanをUTF-8に一括変換する方法とか書かれていたので、manはEUC-JPだと思いこんでいたんだけど、ディストリビューションによって違うのかな?
まあ、とりあえず、今のところ問題はなさそうなので、これでよしとする。
んで、もういっこの問題。
サーバの動作状況をグラフ化したくて、RRDtoolを入れてみた。
グラフ内に日本語を使いたかったので、マルチバイト文字を使う方法を探してみたんだけど、ネットにある情報はほぼ1.0.xに日本語化パッチを当てるというもの。
うーん、どうせなら最新の1.2.xで使いたいなぁ。
んで、調べてみると、ELF氏のサイトで1.2.xでマルチバイト文字が使えるという情報が。
そのサイトには具体的な方法は書かれていなかったけど、configureのオプションを見てみたら、--with-rrd-default-fontなるオプションが。
さっそくIPAモナーフォントを落としてきてインストール。
configureを流して、make、make install。
しかし文字化け。いや、「最大」の「最」だけ見えてたり、全然関係ないアルファベットが表示されていたり。
うーん、やっぱり日本語に対応してないんかな。と、再度検索の旅へ。
どうやらここでも文字コードの問題か。RRDtoolが依存しているGD2で、EUC-JPを使うときは-DXJIS0208のオプションが必要だとか。
というか、ソースに入ってたreadme.jpnに書いてあったよ。説明系の文書ってREADMEとか大文字のファイルになってるからlsしたときに先頭に来てるファイルしか見てなかったよ(;´Д`)
readme.jpnを読むと、文字列を扱うときにiconvでごにょごにょすることもできるらしい。
さっそくiconvも使うようにconfigureを流してmake。
あれ?なんかエラーになったよ。iconvが見つからないらしい。コンパイルオプションで指定してみたり、Makefileを書き換えてみたりしたがどうにも認識しない。
GDのコンパイルを説明していたサイトには、同じオプションでiconv付きのコンパイルが成功しているんだけど。
samba3を入れるときにiconvにパッチを当てたのが原因か?それ以前の問題だと思ってるんだけどなぁ。
結局GDでEUC-JPを使うのは諦める。
UTF-8で何とかすりゃいいんかいな?と思い、rrdtoolのグラフを書くときに、nkf -W8とかで項目名を流し込んでみたが、やっぱり文字化け。
IPAモナーフォントが悪いのだろうかと考え、さざなみフォントを入れてみたが、IPAモナーフォント以上になにもでない。
結局これも諦めて標準で付いてきたDejaVuSansMono-Roman.ttfを使いましたとさ。
うーん、GDに問題があるとすれば、PHPからグラフを描く要件もあるんだけど、そこでも文字化けするんかいな。これも要調査。
0 件のコメント:
コメントを投稿