[三流君] −−> [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%8CNhttp://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系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.078を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告