หนี()
อย่าใช้มัน!
escape()
มีการกำหนดไว้ในส่วนB.2.1.2 การหลบหนีและข้อความแนะนำของภาคผนวก Bพูดว่า:
... คุณสมบัติและพฤติกรรมภาษาทั้งหมดที่ระบุในภาคผนวกนี้มีลักษณะที่ไม่พึงประสงค์ตั้งแต่หนึ่งข้อขึ้นไปและหากไม่มีการใช้งานแบบดั้งเดิมจะถูกลบออกจากข้อกำหนดนี้ ...
... โปรแกรมเมอร์ไม่ควรใช้หรือสันนิษฐานว่ามีคุณสมบัติและพฤติกรรมเหล่านี้เมื่อเขียนรหัส ECMAScript ใหม่ ....
พฤติกรรม:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
อักขระพิเศษมีการเข้ารหัสยกเว้น: @ * _ + -. /
รูปแบบเลขฐานสิบหกสำหรับตัวอักษรที่มีโค้ดหน่วยค่า 0xFF %xx
หรือน้อยกว่าเป็นสองหลักลำดับหนี:
สำหรับตัวละครที่มีหน่วยรหัสมากขึ้น%uxxxx
จะใช้รูปแบบตัวเลขสี่หลัก สิ่งนี้ไม่ได้รับอนุญาตภายในสตริงการสืบค้น (ตามที่กำหนดในRFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
อนุญาตให้ใช้เครื่องหมายเปอร์เซนต์ได้ก็ต่อเมื่อมันถูกตามด้วย hexdigits สองตัวเท่านั้นu
ไม่อนุญาตให้ใช้เปอร์เซ็นต์
encodeURI ()
ใช้ encodeURI เมื่อคุณต้องการ URL ที่ใช้งานได้ โทรออกนี้:
encodeURI("http://www.example.org/a file with spaces.html")
ที่จะได้รับ:
http://www.example.org/a%20file%20with%20spaces.html
อย่าเรียกใช้ encodeURIConent เพราะจะทำลาย URL และส่งคืน
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
ใช้ encodeURIComponent เมื่อคุณต้องการเข้ารหัสค่าพารามิเตอร์ URL
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
จากนั้นคุณสามารถสร้าง URL ที่คุณต้องการ:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
และคุณจะได้รับ URL ที่สมบูรณ์นี้:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
โปรดทราบว่า encodeURIComponent ไม่ได้หลบหนี'
ตัวละคร ข้อผิดพลาดทั่วไปคือการใช้มันเพื่อสร้างคุณสมบัติ html เช่นhref='MyUrl'
ซึ่งอาจประสบข้อผิดพลาดในการฉีด หากคุณกำลังสร้าง html จากสตริงให้ใช้"
แทน'
คำพูดของแอตทริบิวต์หรือเพิ่มเลเยอร์พิเศษของการเข้ารหัส ( '
สามารถเข้ารหัสเป็น% 27)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเข้ารหัสประเภทนี้คุณสามารถตรวจสอบได้ที่: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
เป็นไม่ได้กรณีการใช้งานทั่วไป ตัวอย่างนั้นจะเข้ารหัส=
และ&
ซึ่งอาจไม่ใช่สิ่งที่ตั้งใจไว้!encodeURIComponent
โดยทั่วไปจะใช้แยกต่างหากกับค่าในแต่ละคู่ของค่าคีย์ (ส่วนหลังแต่ละค่า=
)