Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EUCでフォーム部分の文字化けについて



はじめまして、佐々木と申します。

早速ですが、namazu.cgiによる検索の際に、検索式として日本語を入力
して行うと検索できません。ASCII文字の場合は検索できています。
また、シェル上でのnamazuコマンドでの検索もできています。

検索の対象は同サーバ上で動かしているメーリングリストのアーカイブ
をmhonarcでhtml化したファイルで、全てEUCで保存しています。

日本語を入力して行った場合、フォームのテキストフィールドに化けた
文字が表示され、実行(submit)ボタンも消えてしまいます。例えば、
こんにちは
と入力して実行すると、テキストフィールドに次の文字列が現れます。
縺薙s縺・■縺按><input type=

このページをWindowsのメモ帳で見ると該当部分は
<input type="text" name="query" size="40" value="裔ニ蚶裔ve「」裔ツ">
<input type="submit" value="Search!">
のようになっています。(valueの中のニ、「、」、ツは実際は半角です)

検索実行後のページの他の部分は文字化けしていませんが、検索に失敗
しているため
  検索式にマッチする文書はありませんでした。
というメッセージが表示されます。

mknmzで作成したNMZ.head.jaは、<head></head>の間に
<Meta HTTP-EQUIV="content-type"
        CONTENT="text/html;charset=EUC-JP">
を加えた以外にカスタマイズはしていません。

今回の環境で、検証に使用しているWebブラウザはIE6 SP1で
OSはWindows2000 Professionalです。

自分なりに設定を確認してみたつもりですが、行き詰まりました。
どこか調査・設定すべき場所や原因として考えられることについて、
何かお心あたりございましたらコメントお願い致します。


主な環境とnamazuの設定は下記の通りです。

■サーバ
Red Hat Linux release 8.0 (Psyche)
Kernel 2.4.20-20.8

■ソフトウェアのバージョン
# rpm -q namazu kakasi nkf perl
namazu-2.0.10-8
kakasi-2.3.4-8
nkf-1.92-11
perl-5.8.0-88.3
# mhonarc -v
  MHonArc v2.5.14 (Perl 5.008 linux)
# httpd -v
Server version: Apache/2.0.40
Server built:   Nov 27 2003 11:07:36

■ディレクトリ
※以下、本当のメーリングリストの名前をml-nameで置換しています。
・インデックスの保存場所
/var/lib/namazu/index/ml-name
・namazu.cgiの保存場所
/var/www/html/mhonarc/ml-name

■mknmz -Cの結果
※設定ファイルを用意してインデックスを作成しています
(最終的にファイル中で定義しているのは$ADDRESSのみです)
# mknmz --mhonarc -C -f /var/lib/namazu/index/ml-name/.mknmzrc
読み込んだ設定ファイル: /etc/namazu/mknmzrc /var/lib/namazu/index/ml-name/.mknmzrc
システム: linux
Namazu: 2.0.10
Perl: 5.008
NKF: module_nkf
KAKASI: module_kakasi -ieuc -oeuc -w
茶筌: no
わかち書き: module_kakasi -ieuc -oeuc -w
メッセージの言語: ja_JP.eucJP
言語: ja_JP.eucJP
文字コード: euc
CONFDIR: /etc/namazu
LIBDIR: /usr/share/namazu/pl
FILTERDIR: /usr/share/namazu/filter
TEMPLATEDIR: /usr/share/namazu/template
対応メディアタイプ:
  application/pdf
  application/x-bzip2
  application/x-compress
  application/x-gzip
  application/x-rpm
  message/news
  message/rfc822
  text/hnf
  text/html
  text/html; x-type=mhonarc
  text/plain
  text/plain; x-type=rfc
  text/x-hdml
  text/x-roff

■インデックス作成(次のスクリプトでとりあえず一括作成)
#!/bin/bash
IDXDIR=/var/lib/namazu/index/ml-name
ARCDIR=/var/www/html/mhonarc/ml-name
rm -f $IDXDIR/NMZ.*
mknmz --mhonarc -O $IDXDIR -f $IDXDIR/.mknmzrc $ARCDIR

■localeの結果
# locale
LANG=ja_JP.eucJP
LC_CTYPE="ja_JP.eucJP"
LC_NUMERIC="ja_JP.eucJP"
LC_TIME="ja_JP.eucJP"
LC_COLLATE="ja_JP.eucJP"
LC_MONETARY="ja_JP.eucJP"
LC_MESSAGES="ja_JP.eucJP"
LC_PAPER="ja_JP.eucJP"
LC_NAME="ja_JP.eucJP"
LC_ADDRESS="ja_JP.eucJP"
LC_TELEPHONE="ja_JP.eucJP"
LC_MEASUREMENT="ja_JP.eucJP"
LC_IDENTIFICATION="ja_JP.eucJP"
LC_ALL=

■.namazurcの設定内容
※以下、本当のサーバ名をwww.serverで置換しています
Index         /var/lib/namazu/index/ml-name
Replace       /var/www/html/  http://www.server/
Lang          ja_JP.eucJP
Scoring       tfidf
EmphasisTags  "<strong class=\"keyword\">"   "</strong>"

※この.namazuecは、namazu.cgiを保存したディレクトリの
  /var/www/html/mhonarc/ml-nameに保存

尚、保存している(検索対象の)htmlは、mhonarcでいったんJISで出力
し、nkf -meでEUCに変換したものです。
(本当は一度にEUCにしたかったのですがメール本文行頭に ESC+(B が
  入ってしまうため、まずは強引にこのように作成しました。)

kcc というコマンドがあることを知りましたので、念のため上記htmlや
NMZ.head.ja などは kcc -c でEUCと判定されることは確認しています。

■Apache(/etc/httpd/conf/httpd.conf)の該当ディレクトリの設定
※接続許可しているIPをXXX.XXX.XXX.XXXで置換しています
<Directory /var/www/html/mhonarc/ml-name>
ForceType "text/html; charset=euc-jp"
Options +ExecCGI -Includes -Indexes
Order deny,allow
Allow from XXX.XXX.XXX.XXX 127.0.0.1
Deny from all
AddHandler cgi-script .cgi
AuthName ml-name
AuthType Basic
AuthUserFile /var/www/html/mhonarc/mlname/.htpasswd
Require valid-user
</Directory>

※以上の設定による検索ページのURL
http://www.server/mhonarc/ml-name/namazu.cgi

-- 
SASAKI Yoshiaki <NQC38290@xxxxxxxxx>