2012-01-31 35 views
10

http://www.w3schools.com/tags/ref_urlencode.aspmã hóa Tại sao url, hoặc có ký tự để mã hóa

Kể từ URL thường chứa các ký tự bên ngoài các thiết lập ASCII, URL có được chuyển đổi sang một định dạng ASCII hợp lệ.

Nhưng cả không gian, /,% là một phần của bộ ký tự ASCII, vậy tại sao mã hóa chúng ngay từ đầu? Những ký tự nào cần được mã hóa?

+0

Ký tự UTF-8 hoặc bất kỳ ký tự nào từ bộ ký tự khác. ASCII chỉ là phạm vi nhỏ nhất của các ký tự. – Halcyon

+0

Tôi không shure, nhưng tôi nghĩ rằng mọi nhân vật nên được mã hóa mà có thể có một ý nghĩa khác nhau (ví dụ & và không gian). Không sử dụng w3schools.com, nó không liên quan gì đến w3c và thường khá sai. –

Trả lời

5

Như đã lưu ý, không gian không hợp lệ trong URL. Hầu hết các trình duyệt sẽ tự động mã hóa chúng. Tuy nhiên ...

Trang bạn đã liên kết có ví dụ sử dụng từ "Günter" trong phần "Thử tôi". Nếu từ "Günter" được gửi dưới dạng tham số chuỗi truy vấn, nó sẽ không hoạt động. vì "ü" không có trong bộ ký tự ASCII chuẩn.

Nó có nghĩa là được sử dụng khi có các ký tự không phải ASCII tiềm ẩn. Một ví dụ có thể là khi sử dụng dữ liệu từ cơ sở dữ liệu để tạo siêu liên kết. Giả sử mã tạo liên kết đến trang hồ sơ người dùng. Unencoded, mỏ sẽ là:

<a href="profile/?username=David Stratton">Your profile</a> 

khi Günter của sẽ

<a href="profile/?username=Günter">Your profile</a> 

Mine, hầu hết các trình duyệt có thể xử lý. Günter's, có lẽ là không.

Encoded, những sẽ trở thành

<a href="profile/?username=David%20Stratton">Your profile</a> 

<a href="profile/?username=G%FCnter">Your profile</a> 

là các URL hợp lệ.

(Xin tha thứ cho thực tế là hệ thống được thiết kế tốt nhất sẽ không vượt qua một tên người dùng trong một tham số như thế. Đây chỉ là một ví dụ để làm rõ khái niệm này.)

+0

Xin đừng nói * "nó sẽ không hoạt động" *. Giải thích ít nhất những gì nó làm mặt khác, nếu có điều gì sai. – yckart

1

Một số ký tự nhất định, chẳng hạn như dấu cách, cần phải được thoát để đảm bảo các url hợp lệ. Một khi nơi mà điều này chắc chắn sẽ xuất hiện rất nhiều khi tạo các tham số GET.

6

Các nhân vật trong một URL nên được mã hóa vì một số ký tự có ý nghĩa đặc biệt theo số URL specification, một số ký tự không được phép và một số ký tự không thể đại diện trong tất cả các bộ ký tự.

Xem this intro để được hướng dẫn thêm một chút.

Về ví dụ về ký tự mà bạn cung cấp '/' được dành riêng để sử dụng làm dấu tách thành phần trong URL và '%' được sử dụng làm ký tự thoát. Ví dụ:

+0

+1 cho thông số/liên kết :-) – The111