[三流君] −−>
[ASPで遊ぶ、失敗する] −−>
[バックナンバー一覧]
−−> No.078 Server.URLEnCodeで文字列をエンコードする
Server.URLEnCodeで文字列をエンコードする
本文(発行内容)
<Server.URLEnCodeで文字列をエンコードする>
こんにちは、三流プログラマーのKen3です。
今回は、
あまり使わないんだけど、
文字列のエンコードの関数を使ってみます。
/*
* 1.今回のキッカケ
*/
よく使っている、検索サービスなどで、
三流君を検索すると、
http://websearch.yahoo.co.jp/bin/query?p=%bb%b0%ce%ae%b7%af
なんて、
%XXと漢字などが(+や%スペースなども)
エンコードされてURLに乗せて、パラメータを渡している、
そんな場面を見かけると思います。
<FORM ACTION="test061-1.asp" METHOD="GET">
調査したい文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>">
<INPUT TYPE="submit" VALUE="コード調査開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
なんて感じで、HTMLのフォームからGET指定で渡すと、
URL付でtest061-1.aspが呼ばれますよね。
-- 枠外・余談 --
ホントのキッカケは、
http://www.ken3.org/etc/sake.html
日本酒・焼酎の販売で、楽天に飛ばす商品検索のボタンを作りたくて
調べてました。(パラメータとして、商品名を渡したくて)
/*
* 2.簡単なサンプル
*/
フォームから受け取った値を、
Server.URLEnCodeを使い、エンコードして表示するサンプルを作ってみます。
<FORM ACTION="test078-1.asp" METHOD="POST">
調査したい文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>">
<INPUT TYPE="submit" VALUE="Server.URLEnCode 開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
と、FORMでPOSTでデータを送り、
CHK_DATA = Request.Form("DATA") 'パラメータの代入
なんて感じで、データを受け取って、
データありの時、
'長さをチェックする
If Len(CHK_DATA) <> 0 Then '文字が入っていたら
Response.Write "受け取ったデータは["
Response.Write Server.HTMLEncode(CHK_DATA) & "]です<br>"
'*エンコードした結果を表示する
Response.Write "Server.URLEnCodeでエンコードした結果は、<BR>[<b>"
Response.Write Server.URLEnCode(CHK_DATA) & "</b>]です<BR>" & vbCRLF
End If
単純に、
Server.URLEnCode(CHK_DATA)
と変換して、画面に表示してます。
http://www.ken3.org/cgi-bin/test/test078-1.asp
でテスト可能なので、いろいろと遊んでみてください。
test078-1.asp ソース↓
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>Server.URLEnCodeを使い、エンコードして表示する</title>
</head>
<body>
<h1>Server.URLEnCodeを使い、エンコードして表示する</h1>
<!-- Ken3 --><!-- #include file="info.inc" -->
<br>
Server.URLEnCode(文字列)でエンコードしただけです(笑)<br>
※詳細は、ソースと詳細解説のページを見てください。<br>
<hr>
<%
CHK_DATA = Request.Form("DATA") 'パラメータの代入
'長さをチェックする
If Len(CHK_DATA) <> 0 Then '文字が入っていたら
Response.Write "受け取ったデータは["
Response.Write Server.HTMLEncode(CHK_DATA) & "]です<br>"
'*エンコードした結果を表示する
Response.Write "Server.URLEnCodeでエンコードした結果は、<BR>[<b>" & vbCRLF
Response.Write Server.URLEnCode(CHK_DATA) & "</b>]です<BR>" & vbCRLF
End If
%>
<HR>
<FORM ACTION="test078-1.asp" METHOD="POST">
調査したい文字列を入力してください。<br>
<INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>">
<INPUT TYPE="submit" VALUE="Server.URLEnCode 開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
<br>
</body>
</html>
/*
* 3.パラメータ付で検索画面を呼んでみる
*/
なかなか、良いサンプル思いつかなかったのですが、
Server.URLEnCode
^^^^^^^^^^^^^^^^^
のサンプルを他店や本で見ると、やはり、yahooやGoogleの検索が多いので、
キーワードが入力されたら、
左にGoogle,右にMSNの検索結果を表示してみたいと思います。
※yahooとGoogleの検索結果はほぼ一緒なので・・・
HTMLのフレームって、なんか検索関係に嫌われていると噂があるので、
最近、みかけなくなってきました。
※なんて言っている私も、フレーム廃止してますが。
昔私が使っていたフレーム処理だと、
バックナンバーで上に目次のタイトル・内容、
下に飛べるように目次のショートカットなんて処理を書いてました。
http://www.ken3.org/asp/backno-asp.html ←バックナンバーのページ
のソース↓
<html>
<HEAD>
<TITLE>三流君 ASPで遊ぶ、失敗する</TITLE>
<META NAME="keyword" content="プログラミング, ASP, VBScript, IIS, HTML">
<META NAME="discription" content="ASPのサンプル、失敗談など">
</HEAD>
<frameset rows="*,60" FRAMEBORDER=1 BORDER=1 FRAMESPACING=0>
<frame SRC="http://www.ken3.org/backno/backno_asp_mokuji.html" NAME="F_RIGHT">
<frame SRC="http://www.ken3.org/cgi-bin/bmenu/backno_asp_menu.asp" NAME="F_BMENU">
</frameset>
</html>
こんな感じで、フレームの分割をしてました。
<frameset rows="*,60" FRAMEBORDER=1 BORDER=1 FRAMESPACING=0>
これは、上下分割なので、
今回、左右で半分半分の分割にしたいので、
<frameset cols="50%,50%" FRAMEBORDER=1 BORDER=1 FRAMESPACING=0>
にして、フレームのソースを
<frame SRC="グーグルのURL?Q=XXXX" NAME="f_google">
<frame SRC="MSNのURL?Q=XXX" NAME="f_MSN">
としてみます。
三流君[%8EO%97%AC%8CN]を検索する場合
http://www2.google.com/search?hl=ja&ie=Shift_JIS&q=%8EO%97%AC%8CN
と
http://search.msn.co.jp/results.asp?CY=ja&cp=932&q=%8EO%97%AC%8CN
のパラメータで検索してみます。
処理のポイントは、特に無く(笑)
Server.URLEnCodeで、エンコードした検索用のキーワードを渡しています。
http://www.ken3.org/cgi-bin/test/test078-2.asp
でテスト可能なので、
右にGoogle、左にYahooの検索で、遊んでみてください。
※なんか、違和感あるけど。
<%@LANGUAGE=VBScript%>
<html>
<%
CHK_DATA = Request.Form("keyword") 'パラメータの代入
'長さをチェックする
If Len(CHK_DATA) <> 0 Then '文字が入っていたら
strQ = Server.URLEnCode(CHK_DATA) '検索文字列をエンコードする
'フレームを作成する
Response.Write "<frameset cols='50%,50%' FRAMEBORDER=1 BORDER=1>"
Response.Write vbCRLF '改行を出力
'左のフレームはGoogle
Response.Write "<frame SRC='"
Response.Write "http://www2.google.com/search?hl=ja&ie=Shift_JIS&"
Response.Write "q=" & strQ
Response.Write "' NAME='f_google'>"
Response.Write vbCRLF '改行を出力
'右のフレームはMSN
Response.Write "<frame SRC='"
Response.Write "http://search.msn.co.jp/results.asp?CY=ja&cp=932&"
Response.Write "q=" & strQ
Response.Write "' NAME='f_MSN'>"
Response.Write vbCRLF '改行を出力
'フレームを閉じる
Response.Write "</frameset>"
Else '↓入力用のフォームを表示する(Keyワードが未入力の時)
%>
<head>
<title>Server.URLEnCodeを使い、検索パラメータを作る</title>
</head>
<body>
<br>
<h1>Server.URLEnCodeを使い、検索パラメータを作る</h1>
<HR>
好きなキーワードを入れて、検索開始ボタンを押してください<br>
<FORM ACTION="test078-2.asp" METHOD="POST">
検索したいキーワードを入力してください。<br>
<INPUT TYPE="text" SIZE="30" NAME="keyword" VALUE="<%=CHK_DATA%>">
<INPUT TYPE="submit" VALUE="検索開始"><br>
↑いろいろと遊んでみてください↑
</FORM>
<br>
<!-- Ken3 --><% Call OUT_SRC("Server.URLEnCode") 'ソースの表示関数を呼ぶ %>
<!-- Ken3 --><!-- #include file="inc_mokuji.inc" -->
</body>
<%
End If
%>
</html>
-【けんぞう!】---------------------------------------------------------
ASPが利用可能なレンタルサーバーをお探しのアナタ、
http://www.ken3.org/asp/server.html ← けんぞうも使っているサーバーの紹介
『おっIISでbasp21でメール送信、mdbも使えるよ』(三流PG:31歳)
------------------------------------------------------------------------
/*
* 4.終わりの挨拶 </HTML>
*/
今回は、
Server.URLEnCode
を使って、エンコードしたパラメータを作成してみました。
右にGoogle、左にYahooの違和感ある検索で、遊んでみてください。
http://www.ken3.org/cgi-bin/test/test078-2.asp
で検索テストできます。
もっと違う使い方、あるとは思いますが、一例だと思ってください。
何かの参考となれば幸いです。
ASP、VBScript勉強中の三流プログラマーのKen3でした。
フィードバック
ASP系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告