InsideDarkWeb.com

Como puedo convertir los caracteres codificados de una cadena a un string normal con c#

Realmente no se si es UTF8 o que pero estoy recibiendo un json de un servidor que trae caracteres como tildes y cosas por el estilo que quiero convertirlas a texto normal,
algunos de los campos que trae ese json son visión,misión y valores :

 "mision": "<p>Esta es una visión de prueba de SQL SOftware</p>",

    "vision": "<p>Y esta es la visión</p><span style="color:#666666;font-family:arial, sans-serif;font-size:14px;line-height:22px;text-align:justify;background-color:#ffffff;"></span>",

    "valores": "<p>Descripción<br /></p>",

como puedo convertir esos datos con formato extraño a texto normal. Lo intente de esta forma pero no funciono:

  var deco = Encoding.Default.GetBytes(payload);

                    var json = Encoding.UTF8.GetString(deco);

One Answer

.Net framework ofrece System.Net.WebUtility.HtmlDecode y System.Web.HttpUtility.HtmlDecode que puedes utilizar para tu requerimiento.

El resultado de ambos métodos es el mismo y la diferencia más obvia es la disponibilidad en las distintas versiones de .Net, siendo la más notoria que WebUtiliy está disponible para UWP y HttpUtiliy no.

Ten en cuenta la posibilidad de que tengas que aplicar la conversión varias veces porque en tu ejemplo hay casos donde una sola vez no será suficiente.

En el caso del primer string ...visión..., la primera decodificación lo convierte a visión y en la segunda es que obtienes visión

A continuación un segmento del código que utilicé para probar

const string texto = "<p>Esta es una visión de prueba de SQL SOftware</p>";
string decodificado = WebUtility.HtmlDecode(texto);
decodificado = WebUtility.HtmlDecode(decodificado);

A simple vista parece que decodificar 2 veces es suficiente, pero recomiendo hacer pruebas con diferentes cadenas para confirmarlo.

Si después de decodificar, quieres remover los elementos HTML, la respuesta de Ravi Thapliyal (del sitio en ingles) puede ser de utilidad. Allí utiliza una expresión regular para ese fin:

string noHTML = Regex.Replace(decodificado, @"<[^>]+>|&nbsp;", "").Trim();

Answered by Pablo Gutiérrez on November 15, 2021

Add your own answers!

Related Questions

Dos modelos en un solo template Django

1  Asked on August 3, 2020 by abiel-arcila

     

validar un array en js

1  Asked on August 2, 2020 by douglas-camargo

         

Problema con JButton en Java

2  Asked on August 2, 2020 by manvsmachine

 

Graficar una función con integrales en R

2  Asked on August 1, 2020 by sebastian-soto

 

No se sube la imagen en un formulario django

4  Asked on August 1, 2020 by marta

   

Exception when calling AllApi->salePost

0  Asked on July 31, 2020 by gonzalovega7

     

not all code paths return a value C#

0  Asked on July 31, 2020 by martin-mirabal

     

expresiones regulares cadenas javascript C#

0  Asked on July 31, 2020 by elopez

     

Guardar Prints de una Funcion dentro de un txt, Python

1  Asked on July 30, 2020 by richarlyxd

     

Ask a Question

Get help from others!

© 2021 InsideDarkWeb.com. All rights reserved.