Я пытаюсь написать собственный класс помощника Javascript MVC3 Helper для моего проекта, и один из методов должен избегать строк С# для строк Javascript.
Я знаю, что строки С# кодировка UTF-16 и строки Javascript также представляется UTF-16. Здесь нет проблем.
Я знаю, что некоторые символы, такие как обратная косая черта, одинарные кавычки или двойные кавычки, должны иметь обратную косую черту в Javascript, поэтому:
\ becomes \\
' becomes \'
" becomes \"
Есть ли какие-либо другие предостережения, о которых я должен знать, прежде чем писать свой метод преобразования?
EDIT: До сих пор я получаю отличные ответы, добавляю некоторые ответы из ответов на вопрос, чтобы помочь другим в будущем.
Алекс К. предложил использовать System.Web.HttpUtility.JavaScriptStringEncode
, который я обозначил как правильный ответ для меня, потому что я использую .Net 4. Но эта функция не доступный для предыдущих версий .Net, поэтому я добавляю некоторые другие ресурсы здесь:
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 дал интересную ссылку, в которой сообщается, что Javascript использует UCS-2, который является подмножеством UTF-16, но как правильно его кодировать, это совершенно новый вопрос.
LukeH в комментариях ниже напоминал символы CR, LF и TAB, и это напомнило мне контрольные символы (BEEP, NULL, ACK и т.д.).