PUBLICIDADE

Autor

gabriel

Gabriel Fróes

membro deste junho de 2006

Tags

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Você gostou das mudanças no layout aqui do site?

Função URLDecode para Decodificar uma URL Codificada


Com esta função é possível converter uma string contendo uma URL Codificada "URLEncoded" por uma URL Decodificada "URLDecoded". Uma URL Decodificada é representada por caracteres da tabela US-ASCII.

As regras para a formação de uma URLDecoded são descritas no documento Internet Standards:

RFC 1738 - Uniform Resource Locators (URL)

A função URLDecode substitui todas as ocorrências do caractere '+' por ' ' (espaço). A função também lê qualquer valor representado com um triplo hexadecimal, que consiste no caractere '%' seguido de 2 dígitos hexadecimais, a função converte esses dígitos no caractere equivalente da tabela US-ASCII.

A função URLEncode já é nativa do ASP e pode ser encontrada no objeto Server, porém para Decodificar a URL é preciso utilizar uma função externa (como esta).

Veja um exemplo de como pode ser representado uma URL Codificada e como ficará após a utilização da função URLDecode.

Codificada:
http%3A%2F%2Fwww%2Ecodigofonte%2Ecom%2Ebr%2Fpagina%2Easp%3Fparametro1%3DC%F3digo+Fonte%26parametro2%3DO+melhor+conte%FAdo+para+programadores

Decodificada:
http://www.codigofonte.com.br/pagina.asp?parametro1=Código Fonte&parametro2=O melhor conteúdo para programadores
<%
'-----------------------------------------------------
'Nome: URLDecode(ByVal Texto)
'Tipo: Funcao
'Sinopse: Faz um URL Decode em uma String
'Parametros:
'   Texto: Texto com a URL
'Retorno: String
'Autor: Gabriel Fróes - www.codigofonte.com.br
'-----------------------------------------------------
Function URLDecode(ByVal Texto)
	On Error Resume Next
	
	'Declarações
	Dim Posicao
	Dim Posicao2
	Dim objStream
	Dim Retorno

	'Substitui '+' por espaço
	Texto = Replace(Texto, "+", " ")

	'...........................................
	'Utilizando ADODB.Stream (caso seja possível)
	'...........................................
	Set objStream = Server.CreateObject("ADODB.Stream")
	If Err = 0 Then
	    On Error Goto 0
	    objStream.Type = 2 'String
	    objStream.Open

	    'Substitui todos %(chars) pelos caracteres correspondentes
	    Posicao = InStr(1, Texto, "%")
	    Posicao2 = 1
	    Do While Posicao > 0
			objStream.WriteText Mid(Texto, Posicao2, Posicao - Posicao2) + Chr(CLng("&H" & Mid(Texto, Posicao + 1, 2)))
			Posicao2	= Posicao + 3
			Posicao		= InStr(Posicao2, Texto, "%")
	    Loop
	    objStream.WriteText Mid(Texto, Posicao2)

	    'Lendo o texto do objeto stream
	    objStream.Position = 0
	    Retorno = objStream.ReadText

	    'Libera o objeto
	    objStream.Close
	    
		'Destruindo o objeto
		Set objStream = Nothing
	'...........................................
	'Com este método a varredura dos dados é mais lenta e não é recomendável para
	'strings com mais de 100kb.
	'...........................................
	Else
		On Error Goto 0
	    Posicao = InStr(1, Texto, "%")
		Do While Posicao>0 
			Texto = Left(Texto, Posicao - 1) + Chr(Clng("&H" & Mid(Texto, Posicao + 1, 2))) + Mid(Texto, Posicao + 3)
			Posicao = InStr(Posicao + 1, Texto, "%")
	    Loop
	    Retorno = Texto
	End If
	  
	'Retornando a função
	URLDecode = Retorno 
End Function
%>

Sim   Não   Este código foi útil para você?
NotaComentário
Ainda não foi enviado nenhum comentário.
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.