Trong JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Có tương đương cho các ứng dụng C # không? Để thoát các ký tự HTML tôi đã sử dụng:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Nhưng tôi không chắc chắn làm thế nào để chuyển đổi trận đấu sang định dạng thập lục phân chính xác mà JS sử dụng. Ví dụ mã này:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Trả về "%a9%221a"
cho "©√"
thay vì "%C2%A9%E2%88%9A"
. Có vẻ như tôi cần chia chuỗi thành byte hoặc thứ gì đó.
Chỉnh sửa: Đây là cho một ứng dụng windows, các mục duy nhất có sẵn trong System.Web
là: AspNetHostingPermission
, AspNetHostingPermissionAttribute
và AspNetHostingPermissionLevel
.
Uri.EscapeDataString
hoặc HttpUtility.UrlEncode
là cách chính xác để thoát một chuỗi có nghĩa là một phần của URL.
Lấy ví dụ chuỗi "Stack Overflow"
:
HttpUtility.UrlEncode("Stack Overflow")
-> "Stack+Overflow"
Uri.EscapeUriString("Stack Overflow")
-> "Stack%20Overflow"
Uri.EscapeDataString("Stack + Overflow")
-> Cũng mã hóa "+" to "%2b"
----> Stack%20%2B%20%20Overflow
Chỉ cuối cùng là chính xác khi được sử dụng như một phần thực tế của URL (trái ngược với giá trị của một trong các tham số chuỗi truy vấn)
HttpUtility.HtmlEncode
/Giải mã
[.__.] HttpUtility.UrlEncode
/Giải mã
Bạn có thể thêm một tham chiếu đến System.Web
Hội nếu nó không có sẵn trong dự án của bạn
System.Uri.EscapeUriString () dường như không làm gì cả, nhưng System.Uri.Escape Dữ liệ String () làm việc cho tôi.
Hãy thử Server.UrlEncode()
hoặc System.Web.HttpUtility.UrlEncode()
trong các trường hợp khi bạn không có quyền truy cập vào đối tượng Server
. Bạn cũng có thể sử dụng System.Uri.EscapeUriString()
để tránh thêm tham chiếu vào System.Web
Hội.
Đối với Ứng dụng Windows Store, bạn sẽ không có httpUtility. Thay vào đó, bạn có:
Đối với một URI, trước '?':
Đối với tên hoặc giá trị truy vấn URI, sau dấu '?':
Đối với một x-www-form-urlencoding tên hoặc giá trị truy vấn, trong một nội dung POST:
Bạn có thể sử dụng đối tượng Máy chủ trong không gian tên System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode và Server.HtmlDecode.
Chỉnh sửa: poster thêm rằng đây là một ứng dụng Windows chứ không phải là một trang web như người ta có thể tin. Các mục được liệt kê ở trên sẽ có sẵn từ lớp HttpUtility bên trong System.Web, phải được thêm vào như một tài liệu tham khảo cho dự án.