wwwsrch.cgiで引数にー(長音)を渡しても化けないようにするには?

[上に] [前に] [次に]
けん [E-Mail] 1998/11/04(水) 05:14:07
検索のフォームに入れれば、ちゃんと検索できるのですが、
wwwsrch.cgiで引数を wwwsrch.cgi?ツール にすると、
ツ―[ルと受け取ってしまったり、
wwwsrch.cgi?マッキントッシュ とするとソ}ッキントッシュと
受け取られてしまいます。
このようにならないようにするには、どのように引数を渡せば
いいのでしょうか?

B-Cus 1998/11/04(水) 07:05:21
どうしてフォームを使わないんでしょうか。

> 検索のフォームに入れれば、ちゃんと検索できるのですが、

と本来の使い方をするとOKみたいだし、フォームを使えば問題ない
んじゃないでしょうか。

直接日本語を含むURLにアクセスした場合、(ブラウザにも
よるだろうけど)URLエンコードしないので、避けた方がいいと
思います。


ちなみに「ー」が化けるのは、SJISを扱えないperlで
SJISの文字列「ツール」を扱おうとしてるからです。

# でも内部でEUCに直してるようだし、なんでかなぁ。

うふ! 1998/11/07(土) 03:11:06
METHOD=GETのときは、基本的に
wwwsrch.cgi?マッキントッシュ のようにSJISの文字列は渡せないと考えた方がいいようです。
METHOD=POSTのときはブラウザがエンコードしてくれる(確か)から問題ないはずですが。
 
http://www.tohoho-web.com/wwwcgi3.htm#CgiEncode
を参考に。

しなのむし 1998/11/07(土) 06:07:03
なるほど。
もし、けんさんがやりたいことが
<A HREF="wwwsrch.cgi?マッキントッシュ">マッキントッシュを検索</A>
みたいなことだったら、こうしたらどうでしょう?
<A HREF="wwwsrch.cgi?%83%7D%83b%83L%83%93%83g%83b%83V%83%85">マッキントッシュを検索</A>

けん [E-Mail] 1998/11/07(土) 17:01:48
しなのむしさんの言われるようにやってみましたが、
やはり化けてしまいます。

うふ!さんのいわれるようにできないか、
フォームから入力するしかないんでしょうか?
けど、他のカタカナは大丈夫なのに「マ」は化けちゃうんですかね?

しなのむし 1998/11/07(土) 17:22:05
これでも化けるということは・・・
ソースを見せてくれますか?(^^;

まる高 [HomePage] 1998/11/07(土) 17:24:53
フォームから入力する必要はありませんが、フォーム(METHOD=POST)
で送信するしかないと思います。
<FORM NAME="hoge" METHOD="POST" ACTION="hoge.cgi">
<INPUT TYPE="hidden">
</FORM>
の領域を記述し、JavaScriptで
document.hoge.submit()
してはどうですか?
当然、hoge.cgiでデコード処理をしなければなりませんが。

しなのむし 1998/11/07(土) 20:57:51
オリジナルのソースを見た結果、
フォームのNAME(この場合、WORD)を渡していないことにきずきました。
まったく何やってんでしょうね。
とほほほほ (^^;
今度こそ解決だと思いますが>けんさん

私の場合、
wwwsrch.cgi?WORD=マッキントッシュ
でも問題ありませんでしたが、
wwwsrch.cgi?WORD=%83%7D%83b%83L%83%93%83g%83b%83V%83%85
の方がより無難でしょう。

しなのむし 1998/11/07(土) 21:27:00
追記

もっとまともに書くと
wwwsrch.cgi?WORD=%83%7D%83b%83L%83%93%83g%83b%83V%83%85&ANDOR=and
または
wwwsrch.cgi?WORD=%83%7D%83b%83L%83%93%83g%83b%83V%83%85&ANDOR=or
になることはお分かりですね?
フォーム自体のHTMLソースと見比べて
QUERY_STRINGの仕組みを理解してください。

しなのむし 1998/11/07(土) 22:03:33
簡素ですがエンコードエンジン(というほどでもない)
のソースも載せておきます。
JavaScript版です。

<SCRIPT LANGUAGE="JavaScript">
<!--
document.write(escape("マッキントッシュ"));
// -->
</SCRIPT>

マッキントッシュの部分を変えてお使いください。
エンコードしてQUERYに渡せない文字列は無い(はず)です。
大手検索エンジンと同じ方式(のはず)ですから。
自信なし。

うふ! 1998/11/09(月) 02:12:43
JavaScriptのescape()を使った場合、InternetExplorer4.0以上ではunicodeでエンコードされてしまい、たぶんcgi側のjcode.plあたりではデコードできないと思いますが、どうなんでしょ?(そういう質問がすでにあったような・・)

しなのむし 1998/11/09(月) 08:51:19
そんな問題がありましたか>うふ!さん
IE4は使ってないので分かりませんが私のネスケ4.5ではうまく行きます。
ただこの方法だと検索内容の + はエンコード後に %2B に、
半角区切りはエンコード前に + にしてやる必要があります。
http://www.tohoho-web.com/wwwcgi3.htm#CgiEncode 参照のこと)


では、当たり前すぎる簡単な方法なのですが
フォームを以下のようにGETにして内容をSUBMITしてください。

<FORM  METHOD="GET" ACTION="wwwsrch.cgi">

エンコードされてフォームの情報を全部含んだ
QUERY付きのURLがブラウザのロケーション窓に表示されますよね?
それをコピーして使います。

けん [E-Mail] 1998/11/10(火) 18:21:52
[[解決]]
無事に引数を渡すことができました。
エンコードはIEではできなかったけど、Netscapeでできましたのでよかったです。
みなさんありがうございました。

しなのむし 1998/11/10(火) 21:13:07
1998/11/09(月) 08:51:19 に私の書いた
"半角区切り"は "半角スペース区切り"
の間違えです。(念のため)

とほほ 1998/11/11(水) 00:40:58
Netscapeも、4.06からはIE4.0と同様にescape()がUnicodeとなって
いるそうですが・・・・。

うふ! 1998/11/15(日) 04:49:58
Netscape4.5(日本語版)でescape()を試してみました。
まだUnicodeにはなっていませんでした。ご報告までに。

とほほ 1998/11/15(日) 23:00:30
あれれ。じゃぁガセネタだったか・・・
それとも、NN4.06はUnicodeで、NN4.5はシフトJISのまま?

[上に] [前に] [次に]