Tôi đang cố viết một lớp Trình trợ giúp Javascript MVC3 tùy chỉnh cho dự án của tôi và một trong các phương pháp được cho là thoát chuỗi C# thành chuỗi Javascript.Caveats Mã hóa chuỗi C# thành chuỗi Javascript
Tôi biết các chuỗi C# là UTF-16 encoded và các chuỗi Javascript also seem to be UTF-16. Không có vấn đề ở đây.
Tôi biết một số nhân vật như xuyệc ngược, dấu nháy đơn hoặc dấu ngoặc kép phải được gạch chéo ngược thoát trên javascript vậy:
\ becomes \\
' becomes \'
" becomes \"
Có caveat khác tôi phải được nhận thức trước khi viết phương pháp chuyển đổi của tôi?
EDIT: Câu trả lời hay cho đến giờ, tôi đang thêm một số tham chiếu từ câu trả lời trong câu hỏi để trợ giúp người khác trong tương lai.
Alex K. suggested using System.Web.HttpUtility.JavaScriptStringEncode
, mà tôi đánh dấu là câu trả lời phù hợp với tôi, bởi vì tôi đang sử dụng Net 4. Nhưng chức năng này không có sẵn cho các phiên bản Net trước, vì vậy tôi thêm một số tài nguyên khác ở đây:
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 đã cung cấp liên kết thú vị thông báo rằng Javascript sử dụng UCS-2, là tập con của UTF-16, nhưng cách mã hóa chính xác này là một câu hỏi hoàn toàn mới.
LukeH trên các nhận xét dưới đây nhắc nhở các ký tự CR, LF và TAB, và điều đó nhắc tôi về các ký tự điều khiển (BEEP, NULL, ACK, v.v ...).
Đừng quên mã hóa dòng mới, tab và bất kỳ ký tự đặc biệt nào khác. ['JavaScriptStringEncode'] (http://msdn.microsoft.com/en-us/library/system.web.httputility.javascriptstringencode.aspx), [theo đề xuất của Alex] (http://stackoverflow.com/a/ 9413664/55847), sẽ xử lý điều đó cho bạn. – LukeH