bỏ trốn()
Đừng dùng nó!
escape()
được định nghĩa trong phần B.2.1.2 và văn bản giới thiệu của Phụ lục B nói:
... Tất cả các tính năng và hành vi ngôn ngữ được chỉ định trong phụ lục này có một hoặc nhiều đặc điểm không mong muốn và trong trường hợp không sử dụng di sản sẽ bị xóa khỏi thông số kỹ thuật này. ...
... Các lập trình viên không nên sử dụng hoặc giả sử sự tồn tại của các tính năng và hành vi này khi viết mã ECMAScript mới ....
Hành vi:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
Các ký tự đặc biệt được mã hóa ngoại trừ: @ * _ + -. /
Dạng thập lục phân cho các ký tự, có giá trị đơn vị mã là 0xFF trở xuống, là một chuỗi thoát hai chữ số : %xx
.
Đối với các ký tự có đơn vị mã lớn hơn, định dạng bốn chữ số %uxxxx
được sử dụng. Điều này không được phép trong chuỗi truy vấn (như được định nghĩa trong RFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Dấu phần trăm chỉ được phép nếu nó được theo dõi trực tiếp bởi hai chữ số, phần trăm theo sau u
là không được phép.
mã hóa ()
Sử dụng encodeURI khi bạn muốn một URL hoạt động. Thực hiện cuộc gọi này:
encodeURI("http://www.example.org/a file with spaces.html")
để có được:
http://www.example.org/a%20file%20with%20spaces.html
Đừng gọi encodeURIComponent vì nó sẽ phá hủy URL và trả về
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
Sử dụng encodeURIComponent khi bạn muốn mã hóa giá trị của tham số URL.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Sau đó, bạn có thể tạo URL bạn cần:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
Và bạn sẽ nhận được URL hoàn chỉnh này:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Lưu ý rằng encodeURIComponent không thoát khỏi '
ký tự. Một lỗi phổ biến là sử dụng nó để tạo các thuộc tính html như href='MyUrl'
, có thể bị lỗi tiêm. Nếu bạn đang xây dựng html từ các chuỗi, hãy sử dụng "
thay '
cho dấu ngoặc kép thuộc tính hoặc thêm một lớp mã hóa bổ sung ( '
có thể được mã hóa thành% 27).
Để biết thêm thông tin về loại mã hóa này, bạn có thể kiểm tra: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
là không trường hợp sử dụng điển hình. Ví dụ đó sẽ mã hóa=
và&
, có lẽ không phải là những gì đã được dự định!encodeURIComponent
thường được áp dụng riêng cho chỉ giá trị trong mỗi cặp giá trị khóa (phần sau mỗi cặp=
).