Tenho estudado codificação de páginas da web há muito tempo, porque recentemente tive que projetar um script VBS para detecção de link amigável, e as páginas das pessoas para as quais você vincula provavelmente estarão em várias codificações'/*===== ======== ========================================= ======== ==========
'*Introdução Tenho estudado codificação de páginas da web há muito tempo, porque recentemente tive que projetar um script VBS para detecção de link amigável, e a página da pessoa para a qual você está vinculando provavelmente estará em várias codificações. O método anterior era: se. ele não pode ser encontrado usando GB2312, use UTF -8 Check e não consegue encontrar nenhuma prova de que a outra parte não vinculou a você. Embora não seja 100% correto, é quase o mesmo. dois códigos. Vi acidentalmente uma ideia em um endereço nos meus favoritos, finalmente é possível determinar automaticamente a codificação das páginas da web ao coletar artigos. Como esse problema já me incomoda há muito tempo durante o processo de pesquisa, embora pareça simples agora, muita gente ainda deve estar procurando por ele, então postei essas três funções.
' * Nome do arquivo GetWebCodePage.vbs
' * Autor yongfa365
' * Versão v2.0
' * WEB http://www.yongfa365.com
' * E-mail yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' *MadeTime 29/01/2008 20:55:46
' * Última modificação 30/01/2008 20:55:46
' *============================================== ==========================*/
Ligue para getHTTPPage(http://www.baidu.com/)
Chame getHTTPPage(http://www.google.com/)
Chame getHTTPPage (http://www.yongfa365.com/)
Chame getHTTPPage (http://www.cbdcn.com/)
Chame getHTTPPage(http://www.csdn.net/)
'Obtém o conteúdo correspondente e retorna o array
'getContents(expressão, string, se deve retornar um valor de referência)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sadfasdfb ,True)(0)
Função getContents(patrn, strng, yinyong)
'por www.yongfa365.com Mantenha o link ao reimprimir, para que os usuários finais possam obter as informações atualizadas mais recentes a tempo
Em caso de erro, retomar o próximo
Definir re = Novo RegExp
re.Pattern = padrão
re.IgnoreCase = Verdadeiro
re.Global = Verdadeiro
Definir correspondências = re.Execute(strng)
Se Yinyong então
Para i = 0 Para Matches.Count -1
Se Matches(i).Value<> Então RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
Próximo
Outro
Para cada oMatch nas partidas
Se oMatch.Value<> Então RetStr = RetStr & oMatch.Value & Liu Yongfa
Próximo
Terminar se
getContents = Split(RetStr, Liu Yongfa)
Função final
Função getHTTPPage(url)
Em caso de erro, retomar o próximo
Definir xmlhttp = CreateObject(MSXML2.XMLHTTP)
xmlhttp.Open Obter, url, falso
xmlhttp.Enviar
Se xmlhttp.Status<>200, então saia da função
GetBody = xmlhttp.ResponseBody
A ideia de 'Liu Yongfa (www.yongfa365.com) aqui é primeiro pesquisar com base na string retornada e encontrar o cabeçalho do arquivo. Se ainda não estiver lá, use GB2312. Geralmente, a codificação pode ser correspondida diretamente.
'Olhando para a string retornada, embora os caracteres chineses estejam distorcidos, isso não afeta nossa codificação.
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'Veja a codificação no arquivo de cabeçalho
Se Len(GetCodePage)<3 Então GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type) , True)(0)
Se Len(GetCodePage)<3 Então GetCodePage = gb2312
Definir xmlhttp = Nada
«A frase seguinte deve ser bloqueada quando utilizada formalmente.
URL WScript.Echo & -> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
Função final
Função BytesToBstr(Body, Cset)
Em caso de erro, retomar o próximo
Escurecer fluxo de objeto
Definir objstream = CreateObject(adodb.stream)
objstream.Type = 1
objstream.Modo = 3
objstream.Open
objstream.Write Corpo
objstream.Posição = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Fechar
Definir objstream = Nada
Função final