
Ubuntu日本語フォーラム

ログインしていません。
初めまして。
ubuntu10.10で、日本語全文検索「namazu」を個人的に活用したい。インデックスファイル作成にあたり、シェル・スクリプトを作りたいのですが行き詰まっています。
index.sh名なるファイルを記述、冒頭に
#!/bin/bash
export LANG=ja_JP.EUC-JP
mknmz -O ************(とインデックスディレクトリや検索対象のファイル名記述。)
として、適宜実行させたいわけですが、インデックスはできるものの、作業の初めと作成結果の日本語表示部分が文字化けしてしまいます。
locale -a で、文字コードを見て LANG部分を、ja_JP.eucjp などトライしましたが改善しません。
「端末」→「文字コード設定」で「EUC-JP」を選んで、インデックス作成作業すれば、作業結果などの文字化けは発生しません。シェルスクリプト化をあきらめれば済むことかもしれませんが、同じコマンド作業を繰り返しおこなうのも、あまり”進歩”がなく、この投稿となりました。
export 行のLANG部分の記述について、ご存知のかた、ご指導のほどよろしく。
なお、Vine系のnamazu運用では、LANG行に続いて、「export PERL_BADLANG=0」とありますが、Debian系では、不要なのでしょうか?namazuは、perlとも不可分でしょうし、このことについてもよろしく。
オフライン
方法1:
mknmzコマンドの出力をパイプ("|")で「iconv -f EUC-JP -t UTF-8」か「nkf -Ew」に渡す。
方法2:
「LANG=C mknmzコマンド・・・」で英語メッセージにする。
方法3(実験的):
/usr/share/locale/ja/LC_MESSAGES/namazu.moをEUC-JPからUTF-8に変える。
sudo apt-get install gettext
sudo cp -a /usr/share/locale/ja/LC_MESSAGES/namazu.mo /usr/share/locale/ja/LC_MESSAGES/namazu.mo.orig
msgunfmt /usr/share/locale/ja/LC_MESSAGES/namazu.mo \
| iconv -f EUC-JP -t UTF-8 \
| sed -e '1,/^msgid/{s/EUC-JP/UTF-8/}' \
| sudo msgfmt -o /usr/share/locale/ja/LC_MESSAGES/namazu.mo -「PERL_BADLANG=0」の実施の必要性については、その役割について調べると自ずと分かるはずです。
STGSAGWAN さん、早速の回答ありがとうございます。
方法1の「 nkf -Ew 」 をトライしました。(方法2は割愛)
質問メール前に、mknmzの出力をパイプを通して、「 nkf -w 」とやって「日本語」部分が正常表示されることは試してはいたのですが、NMZ各種ファイルへの影響があるのではないかと勝手に思い込み、それ以上”追及”していませんでした。
nkf オプションの -E は、手にしていた「nkfの使い方」ネット簡易版では”不明”。改めてman で調べてはみたものの、ひととおり読んだくらいでは「-Ew」の組み合わせなど思いつくことも…。
方法3 はまだハードルが高く、お預けとさせてください。
「PERL_BADLANG」について。ネット検索はしてみたものの学習能力あがらず。当面は、「こういう風に記述するのだ」とうけとめます。
とりあえずは、お礼のメールまで。またの機会、宜しくお願いします。(Yuzo Okuda)
オフライン