เครื่องมือนี้ทำอะไร
เครื่องมือ escape สตริงแปลงข้อความให้อยู่ในรูปที่ใส่ไว้ในสตริงลิเทอรัลได้ และแปลงสตริงที่ escape แล้วกลับเป็นข้อความธรรมดา รองรับเก้าเป้าหมาย ได้แก่ JSON, JavaScript, Java และ C#, Python, สตริงลิเทอรัลของ SQL, ฟิลด์ CSV, ข้อความและแอตทริบิวต์ XML, นิพจน์ปรกติ และคำสั่ง POSIX shell แต่ละแบบทำตามกฎของภาษานั้น ผลลัพธ์จึงวางลงในโค้ดได้ทันทีโดยไม่เกิดข้อผิดพลาดทางไวยากรณ์
การใช้งานทั่วไป เช่น ใส่ข้อความหลายบรรทัดหรือพาธของ Windows ลงในไฟล์ตั้งค่า JSON ฝังโค้ด HTML สั้น ๆ ไว้ในสตริง JavaScript ครอบชื่อไฟล์ที่มีช่องว่างด้วยอัญประกาศสำหรับสคริปต์ shell หรือแปลงคำค้นตรงตัวอย่าง price (USD) ให้เป็นนิพจน์ปรกติที่จับคู่ได้ตรงทุกตัวอักษร
วิธีใช้
- เลือก Escape หรือ Unescape
- เลือกภาษาหรือรูปแบบ
- วางข้อความลงในช่องป้อนข้อมูลหรือกด ตัวอย่าง ผลลัพธ์จะอัปเดตขณะพิมพ์
- คัดลอกผลลัพธ์ หรือกด ใช้เป็นข้อมูลป้อน เพื่อแปลงกลับและตรวจว่าได้ข้อความเดิม
สำหรับ JSON, JavaScript, Java/C# และ Python ยังสามารถ escape อักขระที่ไม่ใช่ ASCII ทั้งหมดได้ด้วย เพื่อให้ได้สตริง ASCII ล้วนที่ใช้ได้กับการเข้ารหัสไฟล์ทุกแบบ
ตัวอย่าง
บรรทัดเดียวกันที่ escape สำหรับเป้าหมายต่าง ๆ
Input: He said "hi" in C:\Temp
JSON: He said \"hi\" in C:\\Temp
SQL: He said "hi" in C:\Temp (only ' is doubled)
Regex: He said "hi" in C:\\Temp
Shell: 'He said "hi" in C:\Temp'
กฎของแต่ละรูปแบบ
- JSON: escape อัญประกาศ แบ็กสแลช และอักขระควบคุม เหมือนกับ
JSON.stringifyทุกประการ - JavaScript: escape อัญประกาศเดี่ยว แบ็กทิก แท็บแนวตั้ง และตัวแบ่งบรรทัด U+2028 กับ U+2029 เพิ่มเติม
- Java / C#: escape ด้วยแบ็กสแลชและ
\uXXXXเมื่อ unescape ยังรับ escape เลขฐานแปดของ Java และ\xกับ\Uของ C# - Python: escape ด้วยแบ็กสแลชพร้อม
\x,\uและ\Uส่วน escape ที่ไม่รู้จักจะคงไว้ตามเดิม - SQL: เพิ่มอัญประกาศเดี่ยวเป็นสองตัวตามมาตรฐานสตริงลิเทอรัลของ SQL
- CSV: ครอบค่าด้วยอัญประกาศคู่และเพิ่มอัญประกาศภายในเป็นสองตัว เมื่อค่ามีจุลภาค อัญประกาศ การขึ้นบรรทัดใหม่ หรือช่องว่างที่หัวท้าย
- XML: แทนที่เอนทิตีที่กำหนดไว้ล่วงหน้าทั้งห้าตัว เมื่อ unescape ยังถอดรหัสการอ้างอิงอักขระแบบตัวเลขด้วย
- นิพจน์ปรกติ: ใส่แบ็กสแลชหน้าอักขระทุกตัวที่มีความหมายพิเศษ เพื่อให้รูปแบบจับคู่กับข้อความตรงตัว
- Shell: ครอบค่าด้วยอัญประกาศเดี่ยว ซึ่งใน POSIX shell จะไม่มีการขยายใด ๆ และเขียนอัญประกาศเดี่ยวภายในเป็น
'\''
คำถามที่พบบ่อย
› การ escape สตริงหมายถึงอะไร
อักขระบางตัวมีความหมายพิเศษในสตริงลิเทอรัล เช่น อัญประกาศที่ปิดสตริงหรืออักขระขึ้นบรรทัดใหม่ การ escape คือการแทนที่อักขระเหล่านั้นด้วยลำดับที่ปลอดภัย มักเป็นแบ็กสแลชตามด้วยตัวอักษรหนึ่งตัว เพื่อให้วางสตริงลงในซอร์สโค้ด คิวรี หรือไฟล์ได้โดยไม่ทำให้เสียหาย
› ต้องวางอัญประกาศที่ครอบสตริงด้วยไหม
ไม่ต้อง วางเฉพาะเนื้อหา ผลลัพธ์ที่ escape แล้วคือส่วนที่อยู่ระหว่างอัญประกาศในโค้ดของคุณ สำหรับ CSV และ shell ซึ่งครอบทั้งค่าด้วยอัญประกาศ เครื่องมือจะเติมอัญประกาศด้านนอกให้เองเมื่อจำเป็น
› การ escape SQL เพียงพอที่จะป้องกัน SQL injection ไหม
การเพิ่มอัญประกาศเดี่ยวเป็นสองตัวทำให้ได้สตริงลิเทอรัลที่ถูกต้อง มีประโยชน์เมื่อเขียนคิวรีเองหรือเตรียมสคริปต์ migration แต่ในโค้ดแอปพลิเคชันควรใช้คิวรีแบบพารามิเตอร์หรือ prepared statement เสมอ แทนการต่อสตริง SQL
› ทำไม unescape จึงแจ้งว่าพบลำดับ escape ที่ไม่รู้จัก
แต่ละภาษารองรับ escape ต่างกัน เช่น JSON ไม่มี \x และ \0 เครื่องมือจึงแสดงตำแหน่งของลำดับแรกที่ภาษาที่เลือกจะปฏิเสธ ส่วน Python จะคง escape ที่ไม่รู้จักอย่าง \d ไว้ตามเดิม เหมือนกับตัวแปลภาษา Python
› ข้อความของฉันถูกอัปโหลดไหม
ไม่ การ escape และ unescape ทำงานในเบราว์เซอร์ และไม่มีการส่งข้อมูลใดไปยังเซิร์ฟเวอร์