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のまま?
[上に]
[前に]
[次に]