Classic ASPテストページです。 情報が古いので参考程度に読んだりテストしてみてください。

三流君(TOP) /ASPで遊ぶ /ASP記事一覧を見る

分類: [Form関係] /DB系ADOを使い( [Mdb接続] [CSV接続] [Excel接続]) /[ASPでTextFileを操作] /[VBScript関数ほか]

VBA UTF-8 で 誤爆してGoogleからの来場者が多いので、先頭に書きます。
VBAからJavaScriptを使う方法もありますよ。

スクリプト コントロールの概要
https://www.microsoft.com/japan/msdn/scripting/scriptcontrol/scoverview.htm
↑MSのサイトだけど、httpとhttpsが混在してると警告が出るけどビックリしないでね。
頭の例は、MSが大好きなVBScriptだけど、.Language = "JScript" も可能と途中で書いてありました・・・。
なんて↑へんな日本語で書くよりコード↓を見た方が伝わりやすいですよね。
Sub JavaScript_Test() 'VBA から VavaScriptを使うテスト

    '検索文字を入力
    Dim strMOJI As String
    strMOJI = InputBox("キーワード=", "入力", "三流")

    '検索文字をJavaScriptのencodeURI関数で作る
    Dim strPARA As String  'パラメーター
    Dim sc As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "Jscript"  'JavaScriptを指定(書き間違えないでね)
    strPARA = sc.CodeObject.encodeURI(strMOJI) 'encodeURI関数を呼ぶ
    Set sc = Nothing
    Debug.Print strPARA
    
    '手抜きで Shell でWebページを表示する
    Dim strURL As String
    strURL = "http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=" & strPARA
    Call Shell("explorer.exe """ & strURL & """", vbNormalFocus)

End Sub
↑こんな感じで、使えるので、活用してみてください。VBAからJavaScriptを使って処理する感じです。
※※上記でほぼ解決なのですが、下記、メルマガで書いた使えない、冗長な自作関数です。


文字コード関係で遊ぶ amazon KeyWord変換(UTF8変換テスト)


受け取った文字列に対して、
オリジナルのUTF8変換関数を使い、amazonのキーワードに変換します
※詳細は、ソースと詳細解説のページを見てください。

調査したいキーワードの文字列を入力してください。

↑いろいろと遊んでみてください↑

受け取ったキーワード[転職]が
%E8%BB%A2%E8%81%B7となります
テストでgoogleとamazonのキーワードを指定してみます
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E8%BB%A2%E8%81%B7
↑をクリックするとgoogleで調査できました?
↓amazonキーワード結果リンク
転職←テストOK?
↑キーワードリンク リンクのコードは↓
http://www.amazon.co.jp/exec/obidos/external-search?tag=ken3book-22&keyword=%E8%BB%A2%E8%81%B7&mode=blended




ASPサンプルソース(プログラムのソースコード)

詳細解説は[http:/asp/backno/asp097.html]を見てください
下記、/cgi-bin/test/test097-3.aspのソース(中身)です

UTF8 を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードはUTF8 です。 <%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>文字コード関係で遊ぶ amazon KeyWord変換(UTF8変換テスト)</title> </head> <body> <hr> <p>VBA UTF-8 で 誤爆してGoogleからの来場者が多いので、先頭に書きます。<br> <em>VBAからJavaScriptを使う方法</em>もありますよ。<br> <br> スクリプト コントロールの概要<br> <a href='https://www.microsoft.com/japan/msdn/scripting/scriptcontrol/scoverview.htm'>https://www.microsoft.com/japan/msdn/scripting/scriptcontrol/scoverview.htm</a><br> ↑MSのサイトだけど、httpとhttpsが混在してると警告が出るけどビックリしないでね。<br> 頭の例は、MSが大好きなVBScriptだけど、.Language = &quot;JScript&quot; も可能と途中で書いてありました・・・。<br> なんて↑へんな日本語で書くよりコード↓を見た方が伝わりやすいですよね。 <table bgcolor='FLORALWHITE' border=2 CELLPADDING=16><tr><td><pre><code>Sub JavaScript_Test() <Font Color='Green'>'VBA から VavaScriptを使うテスト</Font> <Font Color='Green'>'検索文字を入力</Font> Dim strMOJI As String strMOJI = InputBox(&quot;キーワード=&quot;, &quot;入力&quot;, &quot;三流&quot;) <Font Color='Green'>'検索文字をJavaScriptのencodeURI関数で作る</Font> Dim strPARA As String <Font Color='Green'>'パラメーター</Font> Dim sc As Object Set sc = CreateObject(&quot;ScriptControl&quot;) sc.Language = &quot;Jscript&quot; <Font Color='Green'>'JavaScriptを指定(書き間違えないでね)</Font> strPARA = sc.CodeObject.encodeURI(strMOJI) <Font Color='Green'>'encodeURI関数を呼ぶ</Font> Set sc = Nothing Debug.Print strPARA <Font Color='Green'>'手抜きで Shell でWebページを表示する</Font> Dim strURL As String strURL = &quot;http://www.google.co.jp/search?hl=ja&amp;ie=UTF-8&amp;q=&quot; &amp; strPARA Call Shell(&quot;explorer.exe &quot;&quot;&quot; &amp; strURL &amp; &quot;&quot;&quot;&quot;, vbNormalFocus) End Sub</code></pre></td></tr></table> ↑こんな感じで、使えるので、活用してみてください。VBAからJavaScriptを使って処理する感じです。<br> ※※上記でほぼ解決なのですが、下記、メルマガで書いた使えない、冗長な自作関数です。 </p> <hr> <h1>文字コード関係で遊ぶ amazon KeyWord変換(UTF8変換テスト)</h1> <br> 受け取った文字列に対して、<br> オリジナルのUTF8変換関数を使い、amazonのキーワードに変換します<br> ※詳細は、ソースと詳細解説のページを見てください。<br> <hr> <% CHK_DATA = Request.QueryString("DATA") 'パラメータの代入 %> <FORM ACTION="test097-3.asp" METHOD="GET"> 調査したいキーワードの文字列を入力してください。<br> <INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>"> <INPUT TYPE="submit" VALUE="調査開始"><br> ↑いろいろと遊んでみてください↑ </FORM> <HR> <% '長さをチェックする If Len(CHK_DATA) <> 0 Then '文字が入っていたら '文字数分ループして、コードを表示 strUTF8 = "" '空文字で初期化 For n = 1 To Len(CHK_DATA) strWORK = Mid(CHK_DATA, n, 1) 'n番目の文字を取り出す '2バイト、漢字か判断 手抜きでLen関数で文字数を見た If Len(Hex(Asc(strWORK))) <= 2 Then If Asc(strWORK) <= &H20 Then '制御コードか? strCODE = "%" & Right("0" & HEX(ASC(strWORK)), 2) Else '英数はそのまま+する strCODE = strWORK End If Else strCODE = SJIStoUTF8(strWORK) '変換関数を呼ぶ End If strUTF8 = strUTF8 & strCODE '結果の文字列をつなげる Next Response.Write "受け取ったキーワード[<b>" Response.Write Server.HTMLEncode(CHK_DATA) & "</b>]が<br>" Response.Write Server.HTMLEncode(strUTF8) & "となります<br>" Response.Write "テストでgoogleとamazonのキーワードを指定してみます<br>" strURL = "http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=" & strUTF8 Response.Write "<a Href='" & strURL & "' target='_blank'>" Response.Write Server.HTMLEncode(strURL) & "</a><br>" Response.Write "↑をクリックするとgoogleで調査できました?" & vbCrLf Response.Write "<br>↓amazonキーワード結果リンク<br>" & vbCrLf strURL = "http://www.amazon.co.jp/exec/obidos/external-search?" strURL = strURL & "tag=ken3book-22&keyword=" & strUTF8 & "&mode=blended" Response.Write "<a Href='" & strURL & "' target='_blank'>" Response.Write Server.HTMLEncode(CHK_DATA) & "</a>←テストOK?<br>" Response.Write "↑キーワードリンク リンクのコードは↓<br>" Response.Write Server.HTMLEncode(strURL) & "<br>" End If %> <br> </body> </html> <% 'SJISコードの文字列を受け取り、UTF8コードの%付文字列を返す Function SJIStoUTF8(strSJIS) strUNICODE = ASCW(strSJIS) 'ASCWでユニコードにする 'コードを2進にしてワークに代入する strWORK2 = HEX16toSTR2(HEX(strUNICODE)) '切り取って、UTF8の2進数を作成する 'xxxx xxxx xxxx xxxx を下記に割り当てる '1110xxxx 10xxxxxx 10xxxxxx strUTF8CODE = "1110" & Mid(strWORK2, 1, 4) strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 5, 6) strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 11, 6) '作成した2進数を16進数に戻す strWORK16 = STR2toHEX16(strUTF8CODE) '%を付けて格納 strRET = "" 'リターン値を初期化 strRET = strRET & "%" & Mid(strWORK16, 1, 2) '%を付けた文字列を作成 strRET = strRET & "%" & Mid(strWORK16, 3, 2) strRET = strRET & "%" & Mid(strWORK16, 5, 2) 'リターン値を代入 SJIStoUTF8 = strRET End Function 'HEX16進文字列を受け取り2進数文字列を返す Function HEX16toSTR2(strHEX) Dim n 'ループカウンタ Dim i 'ループのカウンタ Dim n8421 '8 4 2 1の数値計算用 Dim str2STR Dim nCHK str2STR = "" '結果のエリアを初期化する '文字数分ループする For n = 1 To Len(strHEX) On Error Resume Next 'エラー発生時次の行へ nCHK = 0 '0で初期化 nCHK = CInt("&h" & Mid(strHEX, n, 1)) 'n文字目を数値変換 On Error Goto 0 'エラー処理を通常に戻す n8421 = 8 '初期値に8を代入する(上からチェックしたいので) For i = 1 To 4 '4回まわるよ If (nCHK And n8421) = 0 Then 'Andでビットをチェックする str2STR = str2STR & "0" 'ビットは立ってないよ Else str2STR = str2STR & "1" 'ビットは立ってるよ End If '次のビットをチェックしたいので2で割る n8421 = n8421 / 2 Next Next 'リターン値をセットして終了 HEX16toSTR2 = str2STR End Function '2進文字列を受け取り16進文字列を返す Function STR2toHEX16(str2) Dim strHEX Dim n 'ループカウンタ Dim i 'ループのカウンタ Dim n8421 '8 4 2 1の数値計算用 Dim nBYTE '頭4文字単位かチェックする n = Len(str2) Mod 4 '足りない文字数を計算する If n <> 0 Then str2 = String(4 - n, "0") & str2 '頭に文字0を追加する End If strHEX = "" '結果のエリアを初期化する '文字数分ループする For n = 1 To Len(str2) Step 4 '4文字(1バイト)単位にループを作る n8421 = 8 '初期値に8を代入する(上から計算したいので) nBYTE = 0 '1バイト計算用変数を初期化 For i = 0 To 3 '4回まわるよ(4ビット分) 'ビットが立っているかチェックする If Mid(str2, n + i, 1) = "1" Then nBYTE = nBYTE + n8421 'ビットに対応した数値を+する End If '次のビットを計算したいので2で割る n8421 = n8421 / 2 Next '計算して、1倍との数値が完成したので16進文字にしてセットする strHEX = strHEX & Hex(nBYTE) Next 'リターン値をセットして関数を抜ける STR2toHEX16 = strHEX End Function %>




Googleで関連項目を検索する

[キーワード:UTF8] と Sub|Function で検索する。
↓で検索するとプログラムの例 Sub/Function でまとまったHP

Google

あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))

三流解説とリンクページを紹介

ASP系の解説を項目ごとにまとめてみました

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[永遠の下書き日記?]← 恥ずかしいのであまり載せてないけど・・・
[ひとりで掲示板?] ←一人で?掲示板?ぉぃぉぃ



[Topへ戻る] −−>[ASP系へ戻る] −−>[バックナンバーを見る]


現在時刻は、2019/10/22 9:06:48です。