elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Normalizar URL (pasar Url de UTF8 a Unicoce)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Normalizar URL (pasar Url de UTF8 a Unicoce)  (Leído 2,516 veces)
Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Normalizar URL (pasar Url de UTF8 a Unicoce)
« en: 23 Febrero 2016, 16:26 pm »

Hola

He conseguido normalizar una URL de esas con símbolos % y códigos hexadecimales. Por ejemplo:

Código:
"https%3A%2F%2Fes.noticias.locas.com%2Fdescubren-un-jupitiano-en-j%C3%BApiter-666999.html"

(no te molestes en ir que no existe, es inventado)

Agradezco la ayuda al foro y en especial a Elektro que me ha resuelto el tema de pasar un código UTF8 a Unicode.


Código
  1. Option Strict Off
  2. Imports System.Text.RegularExpressions
  3.  
  4. Public Class Form1
  5.  
  6.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  7.        Dim strUrl As String = ("https%3A%2F%2Fes.noticias.locas.com%2Fdescubren-un-ni%C3%B1o-jupitiano-en-j%C3%BApiter-666999.html")        'Enlace
  8.        MsgBox(NormalizarURL(strUrl))
  9.    End Sub
  10.  
  11.    Public Function NormalizarURL(ByVal strUrl as String) As String
  12.        'strUrl = strUrl.Replace("%3A%2F%2F", "://")
  13.        Dim PatternUTF8_1 As String = "(%..%..?)"                                                       'Expresiones regular
  14.        Dim PatternUTF8_2 As String = "(%..?)"                                                          'Expresiones regulares
  15.        Dim MyRegexUTF8_1 As New Regex(PatternUTF8_1, RegexOptions.IgnoreCase)                          'Regex para doble PatternUTF8_1
  16.        Dim MyRegexUTF8_2 As New Regex(PatternUTF8_2, RegexOptions.IgnoreCase)                          'Regex para doble PatternUTF8_2
  17.        Dim MyMatchUTF8_1 As Match = MyRegexUTF8_1.Match(CStr(strUrl))
  18.        Dim MyMatchUTF8_2 As Match = MyRegexUTF8_2.Match(CStr(strUrl))
  19.        While MyMatchUTF8_1.Success
  20.            Dim UTFChar As String = MyMatchUTF8_1.Groups(0).Value                                       'Obtiene el primer valor de cada coincidencia          
  21.            Dim HexChar1 As Byte = CType(Convert.ToInt32(UTFChar.Substring(1, 2), 16), Byte)                'Obtiene el valor entero del primer valor hexadecimal obtenido del código utf-8
  22.            Dim HexChar2 As Byte = CType(Convert.ToInt32(UTFChar.Substring(4, 2), 16), Byte)                    'Obtiene el valor entero del segundo valor hexadecimal obtenido del código utf-8
  23.            '//Convierte carácter hexadecimal UTF-8 a UNICODE por ejemplo "C3 BA" a "ú"
  24.            Dim CharUnicode As String = System.Text.Encoding.UTF8.GetString(New Byte() {HexChar1, HexChar2})
  25.            strUrl = strUrl.Replace(UTFChar, CharUnicode)                                                      'Reemplaza el carácter hexadecimal UTF-8 por Unicode
  26.            MyMatchUTF8_1 = MyMatchUTF8_1.NextMatch()                                                   'Continúe el bucle hasta la siguiente coincidencia.
  27.        End While
  28.        While MyMatchUTF8_2.Success
  29.            Dim UTFChar As String = MyMatchUTF8_2.Groups(0).Value
  30.            '//Convierte y remplaza un carácter hexadecimal a Unicode por ejemplo "2F" a "/"
  31.            strUrl = strUrl.Replace(UTFChar, Convert.ToChar(Convert.ToInt32(UTFChar.Substring(1, 2), 16)))
  32.            MyMatchUTF8_2 = MyMatchUTF8_2.NextMatch()                                                       'Continúe el bucle hasta la siguiente coincidencia.
  33.        End While
  34.        Return CStr(strUrl)
  35.    End Function
  36. End Class


Saludos



« Última modificación: 23 Febrero 2016, 17:16 pm por Lekim » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Normalizar URL (pasar Url de UTF8 a Unicoce)
« Respuesta #1 en: 23 Febrero 2016, 17:16 pm »

Hola

Antes de nada, buen código! y gracias por compartir con los demás.

Pero ...lo siguiente que voy a decir no es por fastidiar, has invertido un esfuerzo en desarrollar el código y eso es lo que se debe valorar, y como práctico/entrenamiento o alternativa me parece bien.
pero Lekim, me veo un poco en la responsabilidad de mencionar que dicha funcionalidad ya está implementada (y optimizada con el uso de For) en la librería de classes de .Net Framework:

Documentación:

El código fuente de Microsoft (para aprendizaje, o por simple curiosidad):

Un ejemplo de uso:
Código
  1. Imports System.Web
  2.  
  3. Dim strUrl As String = "https%3A%2F%2Fes.noticias.locas.com%2Fdescubren-un-jupitiano-en-j%C3%BApiter-666999.html"
  4. Console.WriteLine(HttpUtility.UrlDecode(strUrl)) ' result: https://es.noticias.locas.com/descubren-un-jupitiano-en-júpiter-666999.html

PD: Juraría que hace un tiempo preguntaste algo al respecto de decodificar los caracteres escapados de una url (-> percent-encoding <-) y te hice saber en ese momento que se podía hacer con las classes .Net Framework ...¿o tal vez me estoy equivocando y era otro usuario quien lo preguntó?.

Saludos!


« Última modificación: 23 Febrero 2016, 17:39 pm por Eleкtro » En línea



Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Re: Normalizar URL (pasar Url de UTF8 a Unicoce)
« Respuesta #2 en: 23 Febrero 2016, 17:35 pm »

Hola de nuevo

Si jaja,  pero al final no lo instalé y como es lógico no tengo esa funcionalidad disponible, así como supongo muchos usuarios.

Si que está en mi PC con W7 de 64bits con vb2012 de 64bits y la versión que estoy usando aquí es  vb2010.

De todos modos tampoco es tanto código y puede ser de utilidad y ejemplo.

Sl2s.
 
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Normalizar URL (pasar Url de UTF8 a Unicoce)
« Respuesta #3 en: 23 Febrero 2016, 18:03 pm »

Hola de nuevo

Si jaja,  pero al final no lo instalé y como es lógico no tengo esa funcionalidad disponible, así como supongo muchos usuarios.

Si que está en mi PC con W7 de 64bits con vb2012 de 64bits y la versión que estoy usando aquí es  vb2010.

De todos modos tampoco es tanto código y puede ser de utilidad y ejemplo.

Sl2s.

Hombre, no está tan claro si no aclaras desde un principio los motivos que te llevan a desarrollar "X" código, me diste a entender que programaste una función que simula a la de Microsoft sencillamente por que desconocias esa información,
lo siento por la equivocación.

Esto lo comento para quien no lo sepa:
 - La class HttpUtility no se encuentra disponible en el perfil cliente de .Net Framework (al ser unos runtimes compactos y limitados),
   la solución sería instalar el perfil completo de los runtimes de .Net Framework y compilar bajo ese .NetFx objetivo en Visual Studio.

Saludos!
« Última modificación: 23 Febrero 2016, 18:14 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como normalizar Mp3
Multimedia
kichan 1 2,039 Último mensaje 30 Septiembre 2006, 01:25 am
por Songoku
problema con utf8 y ansi
PHP
johnwmartinez 8 5,563 Último mensaje 27 Enero 2008, 05:41 am
por ???
Normalizar Volumen, se puede con audacity?
Multimedia
halseq 9 19,751 Último mensaje 18 Octubre 2012, 00:31 am
por halseq
MATCH AGAINST y utf8
Bases de Datos
sexto 2 2,553 Último mensaje 16 Abril 2015, 16:21 pm
por sexto
UTF8 A UNICODE
.NET (C#, VB.NET, ASP)
Lekim 4 2,550 Último mensaje 23 Febrero 2016, 14:52 pm
por Lekim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines