none
Decodificar reemplaza texto a html visual basic RRS feed

  • Pregunta

  • Hola tengo un Texbox1, Texbox2 y un boton, al realizar clic en el boton remplaza en un archivo.html el texto de Texbox1 por Texbox2. Lo que necesito es saber como Decodificar Texbox2? ya que al poner una palabra con asentó me sale un código extraño. 

    Desde ya muchas gracias !!!

    lunes, 19 de septiembre de 2016 6:45

Respuestas

  • Ahora como lo simplifico? porque tengo como 10 TexBox 

    Por ejemplo, así:

    Public Function Reemplazar(s As String) As String
        s = s.Replace("á", "á")
        s = s.Replace("é", "é")
        s = s.Replace("í", "í")
        s = s.Replace("ú", "ú")
        s = s.Replace("ó", "ó")
        s = s.Replace("ó", "ó")
        s = s.Replace("ñ", "ñ")
        s = s.Replace("""", """)
        Return s
    End Function
    
    Public Sub Limpiar(t as TextBox)
        t.Text = Reemplazar(t.Text)
    End Sub
    
    Limpiar(TextBox1)
    Limpiar(TextBox2)
    Limpiar(TextBox3)
    'etc.

    martes, 20 de septiembre de 2016 17:35

Todas las respuestas

  • Mientras el texto se mantenga codificado como Unicode (que es lo que tienen internamente los strings en .Net), los acentos se conservan y muestran perfectamente. Si se te pierden, quiere decir que en algún momento has pasado por alguna instrucción que cambió de Unicode a otro formato, y el formato se especificó incorrectamente. En tu caso, el sitio más probable en el que eso ha podido ocurrir es al grabar o leer el fichero en disco. Revisa las instrucciones que usas para leer y grabar el fichero y cerciórate de que les pasas como argumento el System.Text.Encoding que realmente tiene el fichero en disco. Si no lo pones, por defecto te usa UTF8. Y si el fichero no era UTF8, se estropean todos los acentos.
    lunes, 19 de septiembre de 2016 7:02
  • Desde ya te agradesco que has comentado, te doy un ejemplo :

    en Texbox1 dice titulo y en Texbox2 escribo:  El hombre es "innegociable", afirmó 

    al dar clic en el boton, quiero que lo remplace y modifique asi:

    <p>El hombre es &quot;innegociable&quot;, afirm&oacute;</p>

    lunes, 19 de septiembre de 2016 7:14
  • Ah, eso es otra cosa. No es que se te están perdiendo los acentos en el fichero, es que quieres usar la codificación html en lugar de salvar directamente el carácter e indicar su codificación en el META.

    Si es una aplicación asp.net, puedes hacerlo llamando a Server.HtmlEncode. Pero si es una aplicación de escritorio, y no quieres andar experimentando con Referencias a System.Web en una aplicación que no es web, entonces quizá lo más sencillo sea hacer la sustitución con un Replace:

    TextBox2.Text = TextBox2.Text.Replace("ó", "&oacute;")

     y así sucesivamente repetir la misma sustitución con cada uno de los caracteres posibles. Por supuesto, si quieres que quede un poco más elegante, puedes poner las combinaciones en una tabla y recorrerlas con un bucle en lugar de escribir un montón de "Replace" seguidos.
    lunes, 19 de septiembre de 2016 20:28
  • Soy medio novato en esto, te voy a contar lo que estoy haciendo: diseñe una pagina web, ahora con visual studio quiero hacer un formulario donde modifique datos del archivo.html. por eso en TextBox1, Texbox2, TexBox3 quiero que al reemplazar los datos del archivo.html sean modificado con codigo html

    tu respuesta es buena pero no existe un código donde diga 

    TextBox1, Texbox2, TexBox3 = reemplace codigo html 

    lunes, 19 de septiembre de 2016 22:42
  • TextBox1, Texbox2, TexBox3 = reemplace codigo html 

    No, no es algo tan sencillo. Si quieres cubrir todas las posibilidades tendrás que escribir unos cientos de líneas de código, y no te las vamos a dar hechas aquí en el foro, en todo caso te daremos una serie de ideas de qué es lo que habría que hacer para que luego tú te lo trabajes.

    Si la página está ya hecha en html, te puedes encontrar con que trae los caracteres especiales codificados de tres formas distintas, y las tres pueden estar mezcladas en la página.

    La primera es que la página puede tener los caracteres guardados en 8 bits con alguna codificación, tal como ISO-8859 o UTF8. En teoría la codificación empleada se debería indicar en la cabecera con una etiqueta META, pero a veces se omite y los navegadores lo intentar adivinar heurísticamente.

    La segunda es que pueden estar codificados en hexadecimal, tal como &#3f;

    Y la tercera es que se pueden usar los escapes de tipo &oacute;

    En la página que lees, tendrías que hacer las tres sustituciones, porque te podrías encontrar las tres mezcladas, y convertir el texto a Unicode, para que lo muestre correctamente el textbox en el que lo presente. Y después de modificar el textbox, tienes que hacer la codificación inversa eligiendo uno de los tres métodos al salvarlo en el archivo .html.

    Si dispones de un Parser de Html (como el HttpServerUtility que viene con SYstem.Web) entonces esto es más o menos fácil, pero si tienes que programarlo a mano en una aplicación que no tenga las librerías de web, entonces si quieres cubrir todas las combinaciones en el caso más general supondrá escribir cientos de líneas de programa. Desde luego, tu caso puede ser más simple, si sabes que solo vas a procesar una única página que sabes que solo usa un determinado tipo de codificación. Entonces puedes dejar solo ese mecanismo en el código, y será algo más sencillo. Pero aún así no te libras de escribir varias líneas como la que yo te puse, cambiando cada uno de los caracteres con un Replace.

    martes, 20 de septiembre de 2016 6:28
  • ahí entendí mejor esto seria así


    TextBox5.Text = TextBox5.Text.Replace("á", "&aacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("é", "&eacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("í", "&iacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("ú", "&uacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("ó", "&oacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("ó", "&oacute;")
    
    TextBox5.Text = TextBox5.Text.Replace("ñ", "&ntilde;")
    
    TextBox5.Text = TextBox5.Text.Replace(""", "&quot;")

    Ahora como lo simplifico? porque tengo como 10 TexBox 

    martes, 20 de septiembre de 2016 17:07
  • Ahora como lo simplifico? porque tengo como 10 TexBox 

    Por ejemplo, así:

    Public Function Reemplazar(s As String) As String
        s = s.Replace("á", "&aacute;")
        s = s.Replace("é", "&eacute;")
        s = s.Replace("í", "&iacute;")
        s = s.Replace("ú", "&uacute;")
        s = s.Replace("ó", "&oacute;")
        s = s.Replace("ó", "&oacute;")
        s = s.Replace("ñ", "&ntilde;")
        s = s.Replace("""", "&quot;")
        Return s
    End Function
    
    Public Sub Limpiar(t as TextBox)
        t.Text = Reemplazar(t.Text)
    End Sub
    
    Limpiar(TextBox1)
    Limpiar(TextBox2)
    Limpiar(TextBox3)
    'etc.

    martes, 20 de septiembre de 2016 17:35
  • Por casualidad sabes como reemplazar punto y aparte por <p> <p> 

    en el RichTextBox1 escribo lo siguiente:

    a quinta fecha de la Liga de España comenzó este martes.
    
    El Barcelona de Lionel Messi afronte su primera prueba de fuego al recibir al Atlético de Madrid.

    y en el archivo quiero que quede así:

    <p><span>La quinta fecha de la Liga de Espa&ntilde;a comenz&oacute; este martes.</span></p>
    <p><span>El Barcelona de Lionel Messi afronte su primera prueba de fuego al recibir al Atl&eacute;tico de Madrid.</span></p>

    miércoles, 21 de septiembre de 2016 3:06
  • Primero trocea el texto convirtiéndolo en un array de párrafos, por ejemplo usando el método Split para que corte por los retornos de carro. Y luego recorres el array con un bucle y vas concatenando <p> más la cadena más </p>.
    miércoles, 21 de septiembre de 2016 6:33