Я пытаюсь написать собственный класс Javascript MVC3 Helper для моего проекта, и предполагается, что один из методов должен экранировать строки C # в строки Javascript.
Я знаю, что строки C # UTF-16 кодированных , а строки Javascript также выглядят как UTF-16 .Здесь нет проблем.
Я знаю, что некоторые символы, такие как обратная косая черта, одинарные или двойные кавычки, должны быть экранированы обратной косой чертой в Javascript, поэтому:
\ becomes \\
' becomes \'
" becomes \"
Есть ли какие-либо другие предупреждения, о которых я должен знатьперед написанием моего метода преобразования?
РЕДАКТИРОВАТЬ: Пока хорошие ответы, я добавляю некоторые ссылки из ответов в вопросе, чтобы помочь другим в будущем.
Алекс К.предложил использовать 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 и т. Д.).