2011-06-29 23 views
7

thể trùng lặp:
How can I decode HTML characters in C#?unescape một url thoát trong C#

Tôi có url được thoát theo hình thức này:

http://www.someurl.com/profile.php?mode=register&agreed=true 

Tôi muốn chuyển nó sang biểu mẫu chưa được thoát

http://www.someurl.com/profile.php?mode=register&agreed=true 

là điều này giống như escapped html?

làm cách nào để thực hiện việc này?

nhờ

+1

Mã hóa URL hoàn toàn khác với mã hóa HTML, vì điều này được đánh dấu là trùng lặp. Được gắn cờ để mở lại. – Deestan

Trả lời

9

& là một thực thể HTML và được sử dụng khi văn bản được mã hóa vào HTML bởi vì bạn phải "chạy trốn" các & mà có một ý nghĩa đặc biệt trong HTML. Rõ ràng, cơ chế thoát này đã được sử dụng trên URL có lẽ vì nó được sử dụng trong một số HTML ví dụ trong một liên kết. Tôi không chắc chắn lý do tại sao bạn muốn giải mã nó vì trình duyệt sẽ thực hiện giải mã thích hợp khi liên kết được nhấp vào. Nhưng dù sao, để trở lại nó, bạn có thể sử dụng HttpUtility.HtmlDecode trong không gian tên System.Web:

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true"; 
var decoded = HttpUtility.HtmlDecode(encoded); 

Giá trị của decoded là:

http://www.someurl.com/profile.php?mode=register&agreed=true 

Một hình thức mã hóa/giải mã sử dụng là mã hóa URL. Điều này được sử dụng để có thể bao gồm các ký tự đặc biệt trong các phần của URL. Ví dụ: các ký tự /, ?& có ý nghĩa đặc biệt trong URL. Nếu bạn cần bao gồm bất kỳ ký tự nào trong số này trong thông báo truy vấn, bạn sẽ phải mã hóa URL tham số để không làm hỏng URL. Dưới đây là một ví dụ về một URL nơi thoát URL đã được sử dụng:

http://www.someurl.com/profile.php?company=Barnes+%26+Noble 

Công ty tên Barnes & Noble được mã hóa như Barnes+%26+Noble. Nếu & chưa được thoát khỏi URL sẽ không chứa một nhưng hai thông số truy vấn vì & được sử dụng làm dấu phân tách giữa các tham số truy vấn.

+0

đây là một ứng dụng winforms. nó sẽ hoạt động trong .net 2.0? đang nhận được lỗi 'HttpUtility 'không được khai báo' – Smith

+0

@Smith: Đây là tài liệu cho lớp .NET 2.0' HttpUtility': http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS .80) .aspx. Bạn có nhớ thêm tham chiếu đến 'System.Web.dll' không? –

Các vấn đề liên quan