UTF-8で書かれたWebページから namazu で検索
- Summary
あるページからnamazu.cgiに検索文字列を送信する際,
遷移元のページがUTF-8の場合,検索が行なえない.
namazu.cgiがEUC-JPでHTMLエンコードされた検索文字列のみ対応しているのに対し,
遷移元ページがUTF-8で記述されている場合,検索文字列もUTF-8でHTMLエンコードされるため.
1. namazu.cgi を namazu2.cgi にリネーム.
2. 文字コード変換フィルタを namazu.cgi として設置
3. namazu.cgi 中で namazu2.cgi へリダイレクト.
- Source
#!/usr/bin/perl use CGI; use Text::Iconv; use CGI::Lite; my $converter = Text::Iconv->new("UTF8", "EUC-JP"); my $cgi = new CGI; my $new_query = q(); # パラメータが空の場合を考慮 if ($cgi->param('key')){ $new_query = $converter->convert($cgi->param('key')); } $uencode = url_encode($new_query); print "Location: http://example.com/path/to/namazu2.cgi?key="."$uencode\n\n";
- 補足
<form> タグの accept-charsetでも回避可能.
(Firefox1.5で動作を確認.Internet Explorer 6では動作せず.)
<form accept-charset="euc-jp"> </form>
- Reference
namazuでUTF8ファイルの検索
http://www.ksknet.net/linux/namazuutf8.html
CGI
CGI::Lite
Text::Iconv