Tengo un pequeño sitio web y cuando hago Ctrl + U en el sitio web, los caracteres UTF-8 no se imprimen correctamente.
Por ejemplo si trato de imprimir programación me imprime programación
Esto sucede solo cuando imprimo el valor de una variable, no sucede cuando codifico el texto.
Por ejemplo, <div>@variable</div> imprime el contenido con los valores codificados como programación . Pero el valor en sí, usando el inspector es la programación .
Pero si en la siguiente línea escribo <div>programación</div> me lo imprime correctamente.
Traté de usar httputlity.htmldecode pero obtuve el mismo resultado.
También probé meta charset=UTF-8 y guardé el archivo .razor como UTF. Como se especifica en esta publicación, pero ninguno de ellos funcionó.
¿Hay alguna forma de imprimir esos caracteres correctamente?
Estoy usando .NET5 si eso importa.
De forma predeterminada, Razor codifica todos los caracteres que no son ASCII, es decir, aquellos que están fuera del rango del latín básico . Si desea que otros rangos se dejen solos, debe configurar eso. Lo hace en el método ConfigureServices especificando los rangos que Razor no debe codificar. El personaje con el que tiene problemas está en el rango Suplemento Latin-1, por lo que incluye eso:
services.Configure<WebEncoderOptions>(options => { options.TextEncoderSettings = new TextEncoderSettings( UnicodeRanges.BasicLatin, UnicodeRanges.Latin1Supplement); }); Tenga en cuenta que lo que establezca aquí anulará la configuración predeterminada, por lo que también debe incluir el rango UnicodeRanges.BasicLatin . Si no está seguro de qué conjuntos de caracteres debe incluir, puede consultar aquí: http://www.unicode.org/charts/ . Como alternativa, simplemente puede especificar UnicodeRanges.All .