Trong .Net 4.5+ sử dụng WebUtility
Chỉ để định dạng tôi đang gửi đây là một câu trả lời.
Không thể tìm thấy bất kỳ ví dụ tốt so sánh chúng như vậy:
string testString = "http://test# space 123/text?var=val&another=two";
Console.WriteLine("UrlEncode: " + System.Web.HttpUtility.UrlEncode(testString));
Console.WriteLine("EscapeUriString: " + Uri.EscapeUriString(testString));
Console.WriteLine("EscapeDataString: " + Uri.EscapeDataString(testString));
Console.WriteLine("EscapeDataReplace: " + Uri.EscapeDataString(testString).Replace("%20", "+"));
Console.WriteLine("HtmlEncode: " + System.Web.HttpUtility.HtmlEncode(testString));
Console.WriteLine("UrlPathEncode: " + System.Web.HttpUtility.UrlPathEncode(testString));
//.Net 4.0+
Console.WriteLine("WebUtility.HtmlEncode: " + WebUtility.HtmlEncode(testString));
//.Net 4.5+
Console.WriteLine("WebUtility.UrlEncode: " + WebUtility.UrlEncode(testString));
Đầu ra:
UrlEncode: http%3a%2f%2ftest%23+space+123%2ftext%3fvar%3dval%26another%3dtwo
EscapeUriString: http://test#%20space%20123/text?var=val&another=two
EscapeDataString: http%3A%2F%2Ftest%23%20space%20123%2Ftext%3Fvar%3Dval%26another%3Dtwo
EscapeDataReplace: http%3A%2F%2Ftest%23+space+123%2Ftext%3Fvar%3Dval%26another%3Dtwo
HtmlEncode: http://test# space 123/text?var=val&another=two
UrlPathEncode: http://test#%20space%20123/text?var=val&another=two
//.Net 4.0+
WebUtility.HtmlEncode: http://test# space 123/text?var=val&another=two
//.Net 4.5+
WebUtility.UrlEncode: http%3A%2F%2Ftest%23+space+123%2Ftext%3Fvar%3Dval%26another%3Dtwo
Trong .Net 4.5+ sử dụng WebUtility
.UrlEncode
Điều này dường như sao chép HttpUtility.UrlEncode
(trước v4.0) cho các ký tự phổ biến hơn:
Uri.EscapeDataString(testString).Replace("%20", "+").Replace("'", "%27").Replace("~", "%7E")
Lưu ý: EscapeUriString
sẽ giữ một chuỗi uri hợp lệ, khiến nó sử dụng càng nhiều ký tự văn bản càng tốt.
Xem câu trả lời này cho Bảng So sánh các bảng mã khác nhau:
https://stackoverflow.com/a/11236038/555798
Ngắt dòng
Tất cả được liệt kê ở đây (trừ HttpUtility.HtmlEncode
) sẽ chuyển đổi "\n\r"
thành %0a%0d
hoặc%0A%0D
Xin vui lòng chỉnh sửa này và thêm các ký tự mới vào chuỗi thử nghiệm của tôi hoặc để chúng trong các nhận xét và tôi sẽ chỉnh sửa nó.