Sự khác biệt giữa mã hóa Url và mã hóa HTML


85

Sự khác biệt giữa Mã hóa URLMã hóa HTML là gì?


5
Nếu bạn muốn mã hóa để sử dụng trong một URL, bạn sử dụng mã hóa URL. Nếu bạn muốn mã hóa để hiển thị trên một trang HTML, bạn HTML mã hóa nó
Mitch Wheat

4
Mã hóa URL sẽ mã hóa các ký tự để chúng có giá trị đối với URL. Ví dụ: ?trở thành %3Fmã hóa HTML sẽ mã hóa các ký tự để chúng có giá trị đối với HTML. Ví dụ: <trở thành&lt;
Matt Ellen

Câu trả lời:


83

Mã hóa HTML loại bỏ các ký tự đặc biệt trong chuỗi được sử dụng trong tài liệu HTML để tránh nhầm lẫn với các phần tử HTML như thay đổi

"<hello>world</hello>" 

đến

"&lt;hello&gt;world&lt;/hello&gt;"

Mã hóa URL thực hiện một điều tương tự đối với các giá trị chuỗi trong URL như thay đổi

"hello+world = hello world"

đến

"hello%2Bworld+%3D+hello+world"

15
Mã hóa HTML và mã hóa URL về cơ bản làm những việc khác nhau. Ví dụ: nếu bạn mã hóa HTML, 'hello world' và cố gắng thêm nó vào url, bạn sẽ nhận được một url không hợp lệ. Cả hai đều quan trọng và nên được sử dụng cho các trường hợp khác nhau.
Neil

1
Chỉ cần đã phải trải qua và thay thế một số tập quán HtmlEncode để mã hóa url với UrlEncoding, vấn đề với mã hóa không gian và một số ký tự đặc biệt khác
PJUK

Lưu ý, việc sử dụng HtmlEncode thay cho UrlEncode có thể gây ra vấn đề cho các URL vì HtmlEncode đặt các ký tự "&" trên toàn bộ chuỗi của bạn. Tùy thuộc vào những gì dịch vụ web của bạn nhận được URL mong đợi, một vài ký tự "&" bổ sung có thể rất có vấn đề. Ví dụ: nếu dịch vụ web của bạn đang mong đợi mỗi tham số trong URL được đặt trước một ký tự "&", nhưng bạn đã sử dụng HtmlEncode được thêm vào một loạt các ký tự "&" bổ sung, bạn có thể sẽ gặp lỗi khi dịch vụ web của mình cố gắng diễn giải URL. Tôi vừa phải thay thế một số cách sử dụng HtmlEncode bằng UrlEncode vì lý do này.
jdnew18

3
Xin đừng nghe Phill. Tôi không thể tin rằng anh ta đang sử dụng chuỗi truy vấn và tạo url hiện đại bằng HtmlEncode thay vì UrlEncode. Nói UrlEncode hầu như vô dụng là một trong những điều vô lý nhất mà tôi đã thấy trên trang web này.
Nard Dog

23

urlEncode thay thế các ký tự đặc biệt bằng các ký tự có thể được hiểu bởi các trình duyệt web / máy chủ web nhằm mục đích định địa chỉ ... do đó là URL. Ví dụ: khoảng trắng được thay thế bằng% 20, '=% 27, v.v.

Xem các tài liệu tham khảo sau:

HtmlEncode thay thế các ký tự đặc biệt bằng các chuỗi ký tự được chính công cụ HTML nhận dạng để hiển thị nội dung của trang - những thứ như & trở thành &amp; or < = &lt; > = &lt;điều này ngăn cản công cụ HTML diễn giải các ký tự này như một phần của đánh dấu HTML và do đó hiển thị chúng như thể chúng vốn có dây.

Xem tài liệu tham khảo này:


Trên thực tế, URLEncode thay thế dấu cách bằng +, có thể là một vấn đề trong một số trường hợp.
NetMage

13

Cả HTML và URL về cơ bản đều là những ngôn ngữ rất hạn chế . Là một ngôn ngữ, chúng bổ sung ý nghĩa cho các từ khóa hoặc toán tử cụ thể. Đối với cả hai ngôn ngữ này, các từ khóa hầu như luôn là các ký tự đơn. Ví dụ

  • HTML:> và <
  • URL: / và:

Trong việc sử dụng mỗi ngôn ngữ, mặc dù có thể sử dụng các cấu trúc này theo cách không đảm bảo ý nghĩa của ngôn ngữ. Ví dụ: bài đăng này chứa một ký tự>. Tôi không muốn nó được hiểu là HTML, chỉ là văn bản.

Đây là lúc các phương pháp Mã hóa và Giải mã phát huy tác dụng. Các phương thức này sẽ tương ứng lấy một chuỗi và chuyển đổi bất kỳ ký tự nào mà nếu không sẽ được coi là từ khóa thành dạng thoát sẽ không được hiểu là một phần của ngôn ngữ.

Ví dụ: Chuyển> vào HtmlEncode sẽ trả về & gt;


3

HTMLEncode và URLEncode xử lý các ký tự không hợp lệ trong HTML và URL, hay chính xác hơn là các ký tự cần được viết đặc biệt để được diễn giải chính xác. Ví dụ, trong HTML, các ký tự <và> được sử dụng để chỉ các thẻ. Do đó, nếu bạn muốn viết một công thức toán học, chẳng hạn như 1 + 1 <2 + 2, dấu '<' thường được hiểu là phần đầu của thẻ. HTMLEncoding biến ký tự này thành "& lt;" là biểu diễn được mã hóa của dấu nhỏ hơn. URLEncoding cũng làm như vậy, nhưng đối với các URL có các ký tự đặc biệt là khác nhau, mặc dù có một số trùng lặp.


1

Tôi không biết bạn đang làm việc bằng ngôn ngữ nào, nhưng ví dụ như hướng dẫn sử dụng PHP cung cấp những giải thích tốt.

URLEncode

Trả về một chuỗi trong đó tất cả các ký tự không phải chữ và số ngoại trừ -_. đã được thay thế bằng dấu phần trăm (%) theo sau là hai chữ số hex và dấu cách được mã hóa thành dấu cộng (+). Nó được mã hóa giống như cách mã hóa dữ liệu đã đăng từ biểu mẫu WWW, cũng giống như trong loại phương tiện được mã hóa application / x-www-form-urlencoded. Điều này khác với »mã hóa RFC 1738 (xem mã rawurlencode ()) ở chỗ vì lý do lịch sử, dấu cách được mã hóa dưới dạng dấu cộng (+).

Đọc tiếp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.