Я долгое время изучал кодирование веб-страниц, потому что недавно мне нужно было разработать сценарий VBS для обнаружения дружественных ссылок, а страницы людей, на которых вы ссылаетесь, скорее всего, будут в разных кодировках'/*===== ======== ======================================== ======== ==========
'*Введение Я долгое время изучал кодирование веб-страниц, потому что недавно мне нужно было разработать сценарий VBS для обнаружения дружественных ссылок, а страница человека, на которого вы ссылаетесь, скорее всего, будет в различных кодировках. Предыдущий метод был: if. его невозможно найти с помощью GB2312, затем используйте проверку UTF -8 и не можете найти никаких доказательств того, что другая сторона не ссылалась на вас. Хотя это не на 100% правильно, это почти то же самое. Их используют больше людей. два кода. Случайно увидел идею по адресу в избранном, наконец-то можно автоматически определять кодировку веб-страниц при сборе статей. Поскольку эта проблема беспокоила меня в течение длительного времени в процессе исследования, хотя сейчас она кажется простой, многие люди, должно быть, все еще ищут ее, поэтому я опубликовал эти три функции.
' * Имя файла GetWebCodePage.vbs
' * Автор yongfa365
' * Версия v2.0
' * ВЕБ http://www.yongfa365.com
' * Электронная почта yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 29.01.2008, 20:55:46
' * LastModify 30.01.2008, 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 sadfasdfb ,True)(0)
Функция getContents(patrn, strng, yinyong)
'от www.yongfa365.com. Пожалуйста, сохраняйте ссылку при перепечатке, чтобы конечные пользователи могли вовремя получать самую последнюю обновленную информацию.
При ошибке Возобновить Далее
Установить re = Новое регулярное выражение
re.Pattern = шаблон
re.IgnoreCase = Истина
re.Global = Истина
Установить совпадения = re.Execute(strng)
Если Иньён Тогда
Для i = 0 To Matches.Count -1
Если Matches(i).Value<> Тогда RetStr = RetStr & Matches(i).SubMatches(0) & Лю Юнфа
Следующий
Еще
Для каждого oMatch в матчах
Если oMatch.Value<> Тогда RetStr = RetStr & oMatch.Value & Лю Юнфа
Следующий
Конец, если
getContents = Split(RetStr, Лю Юнфа)
Конечная функция
Функция getHTTPPage(url)
При ошибке Возобновить Далее
Установите xmlhttp = CreateObject(MSXML2.XMLHTTP)
xmlhttp.Open Get, URL, False
xmlhttp.Отправить
Если xmlhttp.Status<>200, то выйдите из функции
GetBody = xmlhttp.ResponseBody
Идея Лю Юнфа (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 = Ничего
«Следующее предложение следует блокировать, если оно используется формально.
URL-адрес WScript.Echo & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
Конечная функция
Функция BytesToBstr(Body, Cset)
При ошибке Возобновить Далее
Тусклый объектный поток
Установите objstream = CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode = 3
objstream.Открыть
objstream.Написать тело
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
Установить objstream = Ничего
Конечная функция