Stack Overflow en español Asked by Richard Víquez Pérez on November 15, 2021
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&oacute;n de prueba de SQL SOftware</p>",
"vision": "<p>Y esta es la visi&oacute;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&oacute;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);
.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&oacute;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&oacute;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, @"<[^>]+>| ", "").Trim();
Answered by Pablo Gutiérrez on November 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP