es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El carácter de comilla simple en Razor cshtml no es reconocido como un carácter válido después de convertir el sitio a asp.net core.

He convertido mi sitio web anterior de asp.net MVC .net framework a .net core 6, pero estoy experimentando un problema extraño.

El símbolo de comilla simple, es decir, “ que he incluido en el texto de mi archivo cshtml, aparece como un carácter con el símbolo de reemplazo Unicode en forma de diamante, es decir, �, en la salida en tiempo de ejecución.

En tiempo de ejecución, mi archivo cshtml tiene el carácter de reemplazo Unicode, pero en el editor muestra el carácter de acento como correcto.

Aquí tienes un ejemplo.

Sin embargo, el archivo cshtml exacto se muestra correctamente en la antigua versión de asp.net 4.

Esto no es un problema de configuración de Windows, ya que el sitio antiguo se muestra correctamente en la misma máquina. Esto es lo que he intentado:

Probé diversas cabeceras meta en la cabecera de la página:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

y

<meta http-equiv="Content-Type" content="text/html; charset=UTF-32">

En mi archivo Program.cs, intenté agregar:

builder.Services.Configure<webencoderoptions>(options =>
{
    options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});

y luego intenté:

builder.Services.AddSingleton<htmlencoder>(
    HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.All }));

También intenté:

<system.web>
    <globalization requestencoding="utf-8" responseencoding="utf-8" fileencoding="utf-8"></globalization>
</system.web>

en mi archivo web.config.

Pero la salida sigue siendo la misma, con el carácter de interrogación en tiempo de ejecución.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en asp.net-core y razor, sugiero intentar los siguientes pasos para resolver el problema:

    1. Verifique si el archivo cshtml se guarda con el formato de codificación correcto. En Visual Studio, vaya a Archivo -> Guardar como y seleccione “Guardar con codificación”. Elija “UTF-8 con BOM” o “UTF-8” como formato de codificación y guarde el archivo.
    2. Verifique si el servidor web está configurado para servir contenido con el formato de codificación correcto. En el archivo Startup.cs, agregue el siguiente código al método Configure:

    app.UseResponseEncoding();

    Esto configurará el servidor web para establecer las cabeceras de respuesta con el formato de codificación correcto.

    1. Verifique si el texto está pasando por un proceso de codificación que está cambiando el carácter. En el archivo cshtml, intente usar la siguiente sintaxis para incrustar comillas simples:

    @Html.Raw("'")

    Esto mostrará un carácter de comilla simple sin pasar por ningún proceso de codificación.

    1. Si ninguno de los pasos anteriores funciona, intente usar un editor de texto diferente para editar el archivo cshtml. Algunas aplicaciones de editores de texto pueden no manejar correctamente los formatos de codificación, lo que puede causar este problema.

    Siguiendo estos pasos, debería ser posible resolver el problema con el símbolo de comillas simples que aparece con el carácter de reemplazo de unicode en la salida en tiempo de ejecución de un sitio web asp.net-core.

Comments are closed.