J'ai une chaîne de requête avec une valeur de paramètre qui contient le caractère norvégien å
codé %e5
. La page contient un formulaire avec un attribut d'action qui est automatiquement rempli par ASP.Net. Lorsque l'URL est sortie dans ledit attribut, elle est imprimée avec un codage complet à deux octets: %u00e5
. Lors de la publication, cela semble être correct lors du débogage du code derrière. Toutefois, la page ne fait une redirection vers lui-même (pour une autre raison) et l'en-tête de l'emplacement redirect ressemble à ceci: Location: /myFolder/MyPage.aspx?Param1=%C3%A5
Codage rompu après publication
Ainsi, le %e5
a été traduit %C3%A5
qui rompt la sortie en quelque sorte.
Dans le texte HTML, les caractères brisés ressemblent à Ã¥
après avoir été sortis via HttpUtility.HtmlEncode.
L'application Web entière est codée ISO8859-1.
PS. Lorsque vous supprimez le u00 de la sortie %u00e5
dans l'attribut d'action avant de poster le formulaire, tout est bien produit. Mais l'erreur semble être la traduction de %e5
à %C3%A5
. (Et bien sûr l'auto-redirection, mais c'est une autre affaire.)
Des pointeurs?
Ce n'est pas une erreur , '% C3% A5' est simplement la version UTF-8 encodée en URL de å. L'erreur est dans la conversion au format HTML: chaque séquence codée UTF-8 dans l'URL doit être reconvertie en un point de code Unicode, puis encodée en HTML. – Philipp
En fait, il semble que l'encodage d'URL est correct quand il est '% e5' pour' å' selon http://www.w3schools.com/tags/ref_urlencode.asp. Il semble que le problème est que la redirection IIS sort l'en-tête 'location' avec un encodage utf-8, c'est-à-dire que'% e5' est traduit en '% c3% a5' – Polymorphix