• ベストアンサー

検索窓の設置について

自身のHP上に検索窓を設置していますが キーワードの入力域は一つでボタンによってサーチエンジンを変えています。 HPの文字コードはEUC-JPで作成しているのですが サーチエンジンの中にEUC-JPに対応していないものがあり、入力したキーワードを認識してくれません。 構造としては htmlで<form action=******.cgi method="GET">として ******.cgiでボタンによってサーチエンジンを振り分けています。 jocde.plでのコンバートも上手くいってないようなので 他に方法があれば教えて下さい。 よろしくお願いします。

  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • agharta
  • ベストアンサー率52% (54/103)
回答No.2

> $code = &jcode'convert($data,'sjis'); > > $dataにはeucでセットされているのですが > $codeには何もセットされていません。 jcodeの使用方法は、以下のようになっています。 &jcode'convert(*line, $ocode [, $icode [, $option]]) 返ってくる値は、 return (undef, undef) unless $icode = $icode || &getcode(*s); もしくは return (undef, $icode) if $icode eq 'binary'; もしくは wantarray ? (*f, $icode) : $icode; となっているので、本来ならば、$icode($code)が返ってくるのですが、 返ってこないと言うことは、getcodeがうまくいっていないのでしょう。 明示的に、$dataの文字コードがeucと分かっていれば、 my @tmp = &jcode'convert($data,'sjis'); や my @tmp = &jcode'convert($data,'sjis', 'euc'); としてみて、@tmpの中身を覗いてみてはいかがでしょうか。

その他の回答 (1)

  • agharta
  • ベストアンサー率52% (54/103)
回答No.1

***.cgiでどのように変換を行っているのでしょうか。 また、jcode.plまたはJcode.pmがよろしいかと。(jocde.plはtypo?!) 使用しているPerlのバージョンによっても変わると思います。 サーチエンジンには、どのようにキーワードを渡しているのでしょうか。 もう少し内容を書いた方がわかると思います。

sakurashrimp
質問者

補足

説明不足ですみませんでした。 教えて頂いたようにjcode.plを使ってみましたが 上手く変換できません。 <html側> <form action="******.cgi" method="GET"> <******.cgi側> #! /usr/bin/perl require 'jcode.pl'; $buffer = $ENV{'QUERY_STRING'}; @buffer = split(/&/, $buffer); foreach (@buffer) { # @buffer配列を1つづつ参照 ($n, $v) = split(/=/, $_); $in{$n} = $v; } $data = $in{'word'}; $code = &jcode'convert($data,'sjis'); $dataにはeucでセットされているのですが $codeには何もセットされていません。 jcode.plは******.cgiと同じディレクトリに存在しています。

関連するQ&A

  • 1つのsubmitボタンで2つのCGIを呼び出すことは可能ですか?

    今は、htmlで <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <form action="abc.cgi" method="get"> 以下省略 <input type="submit" value="送信"> </form> <form action="xyz.cgi" method="get"> 以下省略 <input type="submit" value="受信"> </form> </body> </html> という感じで書き、2つのボタンで個々に2つのCGIを呼び出していますが、 これをメールの送受信のように、1つのボタンで2つのCGIを呼び出すことは可能なのでしょうか。 教えてください。お願いいたします。

    • ベストアンサー
    • CGI
  • open.window(javascript) を使わないで、新規windowを3つ開く方法

    JavaScpript の open.window を使うと、値がGET で渡ってしまいます。 POST でデータを渡したいので、FORM で window を 3つ開く方法って ないでしょうか? <FORM method=POST name=form1 target="window1" ACTION="/cgi-bin/search1.pl"> <input type="text" name="searchword1"> </form> <FORM method=POST name=form1 target="window2" ACTION="/cgi-bin/search2.pl"> <input type="text" name="searchword2"> </form> <FORM method=POST name=form1 target="window3" ACTION="/cgi-bin/search3.pl"> <input type="text" name="searchword3"> </form> の 3 つのフォームを 1 つの <input type="submit" name="Search" value=" 検索 "> で起動させるってことです。 (または、open.windows で値を渡すとき、POST で渡したい) よろしくお願いします。

    • ベストアンサー
    • CGI
  • Googleの検索窓をFlashオブジェクト内に設置したい

    55歳の初心者です。 Googleの検索窓(下記HTML)をFlashオブジェクト内に設置したく、苦戦しております。 <form method=get action="http://www.google.co.jp/search" method=get target="_blank"> <input type=text name=q size=31 maxlength=255 value=""> <input type=hidden name=ie value=Shift_JIS> <input type=hidden name=oe value=Shift_JIS> <input type=hidden name=hl value="ja"> <input type=submit name=btnG value="Google 検索"> </form> Flash 8 1. テキスト入力フィールドを作り、インスタンス名 q_txt 2. searchボタンを作り、インスタンス名 send_btn 3. ボタンに下記アクションを記述 on (release) { System.useCodepage = true; q = q_txt.text; ie = Shift_JIS; oe = Shift_JIS; hl = "ja"; this._parent.getURL("http://www.google.co.jp/search", "_blank", "get"); } パブリッシュ後、サーバーにアップ。 ページを表示させ、テキストフィールドにテキストを入力、searchボタンを押すも、 http://www.google.co.jp/webhp が表示され、検索が機能しない。 IE も NN も同様。"get" を "post" にしても同様。 どのようにすれば検索が機能しますでしょうか、よろしくご教授ください。

    • ベストアンサー
    • Flash
  • 自サイトに検索機能を設置

    自サイトに検索機能を設置する場合formタグを使用しますが、 formタグを使用する時必須属性にactionがありますが、これは情報をcgiに送信するために必要とされていると思いますが、 あるサイトのformのソースを見たら、次のようになっていました。自サイトに検索機能があるのですが <form method="post">だけになっていました。 これはactionは必須ですのでhtml自体が間違っていると思いますが、この場合 どこで検索されるのですか?送り先が不明ですが、どうやって検索されるのでしょうか? その他に次のように書かれたサイトがありました。 <form method="get" action="http://www.そのサイトのURL"> このようにcgiを使用しないで自サイトに検索機能を作ることは可能ですか?

    • 締切済み
    • CSS
  • mb_convert_encodingのタイミング

    検索フォームがあるphpファイルはShift_JISですが、検索を問い合わせるデータベースがEUC-JPになっています。 <form action="search.php" method="post"> <input type="text" name="keyword" size=30> <input type="submit" value="検索"> </form> 検索フォームで入力されたキーワードをmb_convert_encodingでShift_JISに変換してからpostしたいのですが、search.phpで検索キーワードを受け取る前にエンコード変換することは無理なのでしょうか?

    • ベストアンサー
    • PHP
  • EZWEBでform送信すると携帯のお気に入りに飛んでしまう問題

    PC,iモードの端末では正常に動作するformで ezwebを利用すると、携帯内のお気に入りページに 飛んでしまいます。 <form action="http://. . . . ./search.cgi" method="get"> といった書き方をしています。 どういう原因が考えられるでしょうか? ちなみに、もうひとつ作ったサイトでは、 <form action="....cgi" method=post> という書き方で正常に動作しました。 もちろんこの相対パスによる書き方も 試しましたがだめでした。 なにかこころあたりありますでしょうか

    • ベストアンサー
    • CGI
  • 検索フォーム設置時のnameの文字化け?

    現在以下のタグを使用して検索フォームの設置を試みています。 <FORM action="patio.cgi?" method="get"> <INPUT name="mode=find&word" size="25"> <INPUT type="submit" value="検索"> </FORM> しかしこの内容で検索ボタンを押すと、=や&がエンコードされた状態になってしまいました。 現状:patio.cgi?mode%3Dfind%26word= 希望:patio.cgi?mode=find&word= このようにするためにはどうしたらいいのでしょうか?詳しい方おられましたら教えていただけると幸いです。

    • ベストアンサー
    • CGI
  • パールが実行されない!!

    パールを実行させようとしたのですが、以下のような結果がブラウザで返されてしまいます。 Method Not Allowed The requested method POST is not allowed for the URL /aaa/bbb/ccc/ddd.pl. そこで、元々のHTML内のPOSTをGETに変えてみたところ、今度はddd.plを上記から実行するか、保存するかのダイアログが出てきてしまいます。 <FORM method=POST onsubmit="return check()" action="../../cgi-bin/ddd.pl">               ↓ <FORM method=GET onsubmit="return check()" action="../../cgi-bin/ddd.pl"> サーバー側のパールの設定(パールが動作しない等)なのでしょうか?

  • 検索場所を増やすには

    cgiに下記のタグを埋め込んで板の検索をできるようにしたのですが、板のディレクトリがたくさんある場合はどのようにすればいいのでしょうか value="support"のsupportを他の板のディレクトリ名にすると、その板の検索がされるのですが <form action="search.cgi" name="SEARCH" method="POST"><BR>[掲示板内全文検索] キーワードは<b>スペース</b>で区切ってください。<BR>検索語句:<input type="text" name="keyword" size="20"><input type="submit" value="検索"><BR><input type="hidden" name="bbs" value="support"><BR></form>

    • 締切済み
    • CGI
  • PHPでの検索

    初心者です。 ネットもさがしてみたのですが下記の意味がイマイアチわかりません。 <form name="form2" action="search.php" method="post"> <input type="text" name="keyword" size="25" value="<?= $keyword ?>"> <input type="submit" name="search" value="検索"><br /> <input type="radio" checked name="searchSelect" value="AND">AND  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR </form> (1)<form name="form2" action="search.php" method="post"> 検索ボタンを押すと「action="search.php"」が起動します。  どういう仕組みなのでしょうか。 (2) <input type="text" name="keyword" size="25" value="<?= $keyword ?>">  作者の説明で、  『前の画面でテキストボックスに入力した値を、デフォルトで表示しています。  <input type="text" name="keyword" size="25" value="<?= $keyword ?>">』  となっていますが、value="<?= $keyword ?>"でなぜそうなるのでしょうか。  また、<?= $keyword ?>の<?= ?>構文はどのような機能があるのでしょうか。 (3)<input type="radio" checked name="searchSelect" value="AND">AND  「value="AND">AND」の右側の「AND]はどういう意味でしょうか。 (4)<input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR  作者の説明で、  『(6)前の画面でORラジオボタンが選択されていた場合は、選択(checked)します。  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect"  value="OR">OR』  とありますが、<?= ($searchSelect == "OR")? "checked" : "" ?>でなぜそういうことができているのでしょうか。  また、『"checked" : 』の『:』は何の役目をしているのでしょうか。 上記4つの質問でどれでもいいですのでどなたかお教え願えないでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう