Sto provando a scrivere un codice JavaScript helper MVC3 personalizzato per il mio progetto e uno dei metodi deve eseguire il escape delle stringhe C# in stringhe JavaScript.Avvertenze Codifica di una stringa C# su una stringa Javascript
So che le stringhe C# sono UTF-16 encoded e le stringhe di Javascript also seem to be UTF-16. Nessun problema qui.
So che alcuni personaggi come backslash, apici singoli o doppi apici devono essere backslash escape Javascript così:
\ becomes \\
' becomes \'
" becomes \"
C'è qualche altro avvertimento devo essere a conoscenza prima di scrivere il mio metodo di conversione?
MODIFICA: Grandi risposte finora, sto aggiungendo alcuni riferimenti dalle risposte nella domanda per aiutare gli altri in futuro.
Alex K. suggested using System.Web.HttpUtility.JavaScriptStringEncode
, che ho segnato come la risposta giusta per me, perché sto utilizzando .Net 4. Ma questa funzione non è disponibile per le versioni precedenti .Net, quindi sto aggiungendo alcune altre risorse qui:
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 ha fornito un collegamento interessante che informa che Javascript utilizza UCS-2, che è un sottoinsieme di UTF-16, ma come codificarlo correttamente è una domanda completamente nuova.
LukeH sui commenti sottostanti ha richiamato i caratteri CR, LF e TAB e ciò mi ha ricordato i caratteri di controllo (BEEP, NULL, ACK, ecc.).
Non dimenticare di codificare newline, schede e altri caratteri speciali. ['JavaScriptStringEncode'] (http://msdn.microsoft.com/en-us/library/system.web.httputility.javascriptstringencode.aspx), [come suggerito da Alex] (http://stackoverflow.com/a/ 9413664/55847), gestirà quello per voi. – LukeH