J'ai un contrôleur ASP.NET MVC qui renvoie une vue. Dans cette vue, je crée du html. Par exemple

@Html.ActionLink(HttpUtility.HtmlDecode("¿Olvidó su contraseña?"), "ForgotYourPassword", "Account", null, new { style = "color: white; text-decoration: none;"})

Le fait est que cette application doit gérer certains caractères spéciaux, par exemple le ñ.

Le code ci-dessus fonctionne correctement, le html est rendu sans problème. Mais le problème est que je ne comprends pas pourquoi devrais-je utiliser:

HttpUtility.HtmlDecode("¿Olvidó su contraseña?")

Cette ligne renverra simplement "¿Ólvido su contraseña?", Mais si au lieu d'utiliser HtmlDecode, j'utilise simplement:

@Html.ActionLink("¿Ólvido su contraseña?", "ForgotYourPassword", "Account", null, new { style = "color: white; text-decoration: none;"})

Le navigateur ne pourra pas afficher correctement le code HTML et il aura des problèmes de codage de caractères.

Pourquoi ne puis-je pas simplement utiliser "¿Ólvido su contraseña?" ?. Après tout HttpUtility.HtmlDecode("¿Olvidó su contraseña?") renvoie "¿Ólvido su contraseña?"

2
Franco Fittipaldi 17 janv. 2017 à 17:36

2 réponses

Meilleure réponse

Le codage de la page générée (probablement UTF-8) n'est pas le même que celui de votre code source.

Vous devez comparer la balise <meta charset="..."> dans le HTML généré et l'encodage de votre code source (voici un moyen simple de le découvrir).

S'ils sont différents, la solution la plus simple consiste à enregistrer votre code source avec le même encodage que la page Web.

Si le problème persiste, essayez d'ajouter ceci à votre Web.config:

<system.web>
    <globalization fileEncoding="utf-8" />
</system.web>
1
Community 23 mai 2017 à 12:16

Il n'y a aucune différence si vous n'utilisez qu'un contenu statique, mais si vous avez besoin de récupérer le texte d'une base de données ou d'un fichier par exemple, cela sera utile pour afficher les caractères avec l'encodage correct.

0
Lucas Micheleto 17 janv. 2017 à 14:57