私は長い間 Web ページのコーディングを勉強してきました。最近、フレンドリー リンク検出用の VBS スクリプトを設計する必要があり、リンク先のユーザーのページはさまざまなエンコーディングになっている可能性が高いためです。'/*===== ======== ========================================= ======== ==========
'*イントロ私は長い間 Web ページのコーディングを勉強してきました。最近、フレンドリー リンク検出用の VBS スクリプトを設計する必要があり、リンク先のユーザーのページはさまざまなエンコーディングになっている可能性が高いためです。以前の方法は次のとおりでした。 GB2312 を使用すると見つからない場合は、UTF -8 チェックを使用し、相手がリンクしていないという証拠が見つかりません。100% 正しいわけではありませんが、ほぼ同じです。お気に入りのアドレスで偶然見つけた 2 つのコード。記事を収集するときに Web ページのエンコーディングを自動的に決定できるようになりました。この問題は研究の過程で私が長い間悩まされていた問題であり、今では簡単なようですが、まだ多くの人が探しているはずなので、この 3 つの機能を投稿しました。
' * ファイル名 GetWebCodePage.vbs
' * 著者 yongfa365
' * バージョン v2.0
' * WEB http://www.yongfa365.com
' * 電子メール yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 2008-01-29 20:55:46
' * LastModify 2008-01-30 20:55:46
' *=============================================== ==========================*/
getHTTPPage(http://www.baidu.com/) を呼び出します。
getHTTPPage(http://www.google.com/) を呼び出します。
getHTTPPage(http://www.yongfa365.com/) を呼び出します。
getHTTPPage(http://www.cbdcn.com/) を呼び出します。
getHTTPPage(http://www.csdn.net/) を呼び出します。
'一致するコンテンツを取得し、配列を返します
'getContents(式, 文字列, 参照値を返すかどうか)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sacfasdfb ,True)(0)
関数 getContents(patrn, strng, yinyong)
' by www.yongfa365.com エンドユーザーが最新の更新情報をすぐに入手できるように、再印刷する場合はリンクを保持してください。
エラー時は次へ再開
re = 新しい正規表現を設定します
re.パターン = パターン
re.IgnoreCase = True
re.Global = True
Set Matches = re.Execute(strng)
イニョンならそれで
For i = 0 To Matches.Count -1
If Matches(i).Value<> then RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
次
それ以外
マッチ内の各 oMatch について
If oMatch.Value<> then RetStr = RetStr & oMatch.Value & Liu Yongfa
次
終了の場合
getContents = Split(RetStr, Liu Yongfa)
終了機能
関数 getHTTPPage(url)
エラー時は次へ再開
xmlhttp = CreateObject(MSXML2.XMLHTTP) を設定します。
xmlhttp.Open Get、URL、False
xmlhttp.送信
xmlhttp.Status<>200 の場合、関数を終了します
GetBody = xmlhttp.ResponseBody
Liu Yongfa (www.yongfa365.com) のアイデアは、最初に返された文字列に基づいて検索し、ファイル ヘッダーがまだ存在しない場合は、GB2312 を使用して直接一致させることです。
返された文字列を見ると、中国語の文字が文字化けしていますが、エンコードには影響しません。
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'ヘッダーファイルのエンコーディングを確認してください
Len(GetCodePage)<3 の場合 GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type) , True)(0)
Len(GetCodePage)<3 の場合、GetCodePage = gb2312
xmlhttp = なしを設定します
「次の文は正式に使用される場合はブロックする必要があります。
WScript.Echo URL & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
終了機能
関数 BytesToBstr(Body, Cset)
エラー時は次へ再開
薄暗いオブジェクトストリーム
objstream = CreateObject(adodb.stream) を設定します。
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.本体の書き込み
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = なしを設定します
終了機能