asp.net mvc 3 - Javascript konverterar franska specialtecken
I min MVC 3-app har jag flera resx-filer med meddelandesträngar såsom: "Editer groupe détails". Alla dessa används antingen för fönstertitlar eller bekräftelse-/varningsmeddelanden. För att kunna använda dem i mina olika .js-filer har jag i min master-sida skapat ett JavaScript-objekt som heter localizedRessources. Problemet är att strängarna förändras i detta objekt, till exempel blir den ovan nämnda strängen "Editer groupe détails".
Vilka alternativ har jag här? Finns det en speciell funktion som säger till JS att inte koda dessa? Finns det ett sätt att direkt använda strängarna i mina .js-filer? (detta fungerar, förresten, i vissa fall, men jag skulle föredra att jag inte hade för mycket JS-kod i mina cshtml-filer).
Jag har <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">-taggen tillagd i mitt <head>-element för alla sidor, så jag är okej där. Alla förslag är välkomna.
Svar #1
Enligt din kommentar
<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = {
FailedUploadErrorMessage: '@Resources.GeneralLocalization.FailedUploadErrorMessage'
/*...*/
du försökte rendera javaScript med ASP.NET MVC Razor. Vanligtvis flyttar Razor speciella tecken till entiteter, som & blir & och icke-namngivna entiteter som é blir é. I javaScript behöver du dessa tecken antingen som native i UTF-8/16 (eller om det verkligen inte är möjligt kodade som \u00E9).
I Razor gör @ att renderingsmotorn skriver ut en kodad, escapad, entity-ifierad representation i HTML.
När du renderar JavaScript vill du inte att Razors implicita escapning ska användas, så det du behöver är
<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = {
FailedUploadErrorMessage: '@Html.Raw(Resources.GeneralLocalization.FailedUploadErrorMessage)'
/*...*/
Och oops: även JavaScript är UTF-16 (med några reservationer)
