asp.net mvc 3 - Javascript konvertira francuske posebne znakove
U svojoj MVC 3 aplikaciji imam nekoliko resx datoteka s tekstovima poruka kao što su: "Editer groupe détails". Svi se koriste ili za naslove prozora ili za poruke potvrde/upozorenja. Dakle, kako bih ih mogao koristiti u raznim .js datotekama, napravio sam JavaScript objekt na svojoj glavnoj stranici pod nazivom localizedRessources. Problem je što se tekstovi u ovom objektu mijenjaju; na primjer, gore navedeni tekst postaje "Editer groupe détails".
Koje su moje opcije ovdje? Postoji li posebna funkcija koja govori JS-u da ne kodira ove vrijednosti? Postoji li način da izravno koristim stringove u mojim .js datotekama? (ovo, usput rečeno, radi u nekim slučajevima, ali radije ne bih imao previše JS koda u mojim cshtml datotekama).
Imam dodan <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> tag u svoj <head> element za sve stranice, tako da sam tu u redu. Bilo koji prijedlog je dobrodošao.
Odgovor #1
Prema vašem komentaru
<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = {
FailedUploadErrorMessage: '@Resources.GeneralLocalization.FailedUploadErrorMessage'
/*...*/
pokušali ste prikazati JavaScript koristeći ASP.NET MVC Razor. Razor obično pretvara posebne znakove u entitete, kao što je & koji postaje &, a nenumeričke entitete kao što je é koji postaju é. U JavaScriptu vam ovi znakovi trebaju ili u izvornom UTF-8/16 obliku (ili ako to stvarno nije moguće, kodirani kao \u00E9).
U Razoru, @ omogućuje mehanizmu za prikaz da izađe s kodiranim, escapiranim, entitetiziranim prikazom u HTML-u.
Kada prikazujete javaScript, ne želite implicitno eskapiranje Razora, pa vam je potrebno
<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = {
FailedUploadErrorMessage: '@Html.Raw(Resources.GeneralLocalization.FailedUploadErrorMessage)'
/*...*/
I ups: također je javaScript UTF-16 (s nekim upozorenjima)
