アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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の中身を覗いてみてはいかがでしょうか。
    • good
    • 0

***.cgiでどのように変換を行っているのでしょうか。


また、jcode.plまたはJcode.pmがよろしいかと。(jocde.plはtypo?!)

使用しているPerlのバージョンによっても変わると思います。
サーチエンジンには、どのようにキーワードを渡しているのでしょうか。

もう少し内容を書いた方がわかると思います。

この回答への補足

説明不足ですみませんでした。
教えて頂いたように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と同じディレクトリに存在しています。

補足日時:2006/01/30 11:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!