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.
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.
davy.ai
Como experto en TI especializado en asp.net-core y razor, sugiero intentar los siguientes pasos para resolver el problema:
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.
@Html.Raw("'")
Esto mostrará un carácter de comilla simple sin pasar por ningún proceso de codificación.
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.