none
Problema con la codificación UTF-8 RRS feed

  • Pregunta

  • Hola

    Necesito ayuda para poder traer datos con caracteres especiales de una base de datos a un formulario ASP.NET MVC en una vista para editar, el problema es que en los controles de texto los muestra correctamente a excepción del control select. Tengo este código para traerlo usando jquery:

    $("#Edificio").val("@Server.HtmlDecode(Model.Edificio.ToString())");

    pero en la herramienta de desarrolladores del navegador chrome recibo los datos así:

    $("#Edificio").val("Centro de Información");

    Y ya tengo configurado el web.config con esta línea de código:

    <globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" culture="es-MX" uiCulture="es-MX"/>

    Alguna sugerencia que me puedan dar o algo que esté haciendo mal, ya intenté de varias maneras y no consigo resolverlo.

    Agradecería su apoyo.

    Saludos.

    viernes, 19 de febrero de 2021 19:47

Respuestas

  • La "ó" en el juego de caracteres ISO-8859-1 es, efectivamente, el carácter 243, así que el HtmlEncode está devolviendo la codificación correcta. Creo que el error está en que para el "val" no deberías pasar por el Encode de html, sino que espera recibir los datos como string de javascript, no con codificación HTML.

    Y fíjate que he dicho bien "HtmlEncode", a pesar de que tú has escrito "HtmlDecode". Tu Decode no hace nada. Recibe los datos del ToString, que no están codificados en Html, por lo que al pasarlos por el Decode no cambia nada. Y entonces llegan a la "@" de Razor, que internamente hace un Encode. Ese Encode es el que te lo está fastidiando todo. Se puede deshabilitar llamando a Html.Raw:

    $("#Edificio").val("@Html.Raw(Model.Edificio.ToString())");

    • Marcado como respuesta Rodry57 domingo, 21 de febrero de 2021 0:37
    sábado, 20 de febrero de 2021 10:06

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    viernes, 19 de febrero de 2021 20:24
    Moderador
  • La "ó" en el juego de caracteres ISO-8859-1 es, efectivamente, el carácter 243, así que el HtmlEncode está devolviendo la codificación correcta. Creo que el error está en que para el "val" no deberías pasar por el Encode de html, sino que espera recibir los datos como string de javascript, no con codificación HTML.

    Y fíjate que he dicho bien "HtmlEncode", a pesar de que tú has escrito "HtmlDecode". Tu Decode no hace nada. Recibe los datos del ToString, que no están codificados en Html, por lo que al pasarlos por el Decode no cambia nada. Y entonces llegan a la "@" de Razor, que internamente hace un Encode. Ese Encode es el que te lo está fastidiando todo. Se puede deshabilitar llamando a Html.Raw:

    $("#Edificio").val("@Html.Raw(Model.Edificio.ToString())");

    • Marcado como respuesta Rodry57 domingo, 21 de febrero de 2021 0:37
    sábado, 20 de febrero de 2021 10:06
  • Hola, muchas gracias por apoyarme y aclarar la duda, si se solucionó mi problema.
    domingo, 21 de febrero de 2021 0:45