Próbuję napisać niestandardową klasę Pomocnika MVC3 w języku Wroga dla mojego projektu, a jedna z metod powinna uciec ciągi C# do ciągów JavaScript.Usterki Kodowanie ciągu C# do łańcucha JavaScript
Wiem, że ciągi C# to UTF-16 encoded, a łańcuchy JavaScript also seem to be UTF-16. Nie ma problemu.
Znam kilka takich znaków backslash, apostrofy lub cudzysłowy muszą być odwrotny ukośnik-uciekł JavaScript tak:
\ becomes \\
' becomes \'
" becomes \"
Czy istnieją inne zastrzeżenie muszę mieć świadomość przed napisaniem moją metodę konwersji?
EDYCJA: Świetne odpowiedzi do tej pory, dodam pewne odniesienia z odpowiedzi w pytaniu, aby pomóc innym w przyszłości.
Alex K. suggested using System.Web.HttpUtility.JavaScriptStringEncode
, które oznaczone jako właściwą odpowiedź dla mnie, ponieważ używam .NET 4. Ale ta funkcja nie jest dostępna do poprzednich wersji .NET, więc dodaję jakieś inne zasoby tutaj:
CR becomes \r // Javascript string cannot be broke into more than 1 line
LF becomes \n // Javascript string cannot be broke into more than 1 line
TAB becomes \t
Control characters must be Hex-Escaped
JP Richardson dała ciekawy link informujący, że JavaScript używa UCS-2, który jest podzbiorem UTF-16, ale jak poprawnie to zakodować, jest zupełnie nowym pytaniem.
LukeH na komentarzach poniżej przypomniał znaki CR, LF i TAB, które przypominały mi znaki kontrolne (BEEP, NULL, ACK itd.).
Nie zapomnij o zakodowaniu nowych linii, zakładek i innych znaków specjalnych. ['JavaScriptStringEncode'] (http://msdn.microsoft.com/en-us/library/system.web.httputility.javascriptstringencode.aspx), [zgodnie z sugestią Alex] (http://stackoverflow.com/a/ 9413664/55847), obsłuży to dla ciebie. – LukeH