DevToolPal
ไทย

Escape และ Unescape สตริง

Escape หรือ unescape สตริงสำหรับ JSON, JavaScript, Java/C#, Python, SQL, CSV, XML, นิพจน์ปรกติ และคำสั่ง shell

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

โหมด

อินพุต

0 ตัวอักษร · 0 B

เอาต์พุต

0 ตัวอักษร · 0 B

เครื่องมือนี้ทำอะไร

เครื่องมือ escape สตริงแปลงข้อความให้อยู่ในรูปที่ใส่ไว้ในสตริงลิเทอรัลได้ และแปลงสตริงที่ escape แล้วกลับเป็นข้อความธรรมดา รองรับเก้าเป้าหมาย ได้แก่ JSON, JavaScript, Java และ C#, Python, สตริงลิเทอรัลของ SQL, ฟิลด์ CSV, ข้อความและแอตทริบิวต์ XML, นิพจน์ปรกติ และคำสั่ง POSIX shell แต่ละแบบทำตามกฎของภาษานั้น ผลลัพธ์จึงวางลงในโค้ดได้ทันทีโดยไม่เกิดข้อผิดพลาดทางไวยากรณ์

การใช้งานทั่วไป เช่น ใส่ข้อความหลายบรรทัดหรือพาธของ Windows ลงในไฟล์ตั้งค่า JSON ฝังโค้ด HTML สั้น ๆ ไว้ในสตริง JavaScript ครอบชื่อไฟล์ที่มีช่องว่างด้วยอัญประกาศสำหรับสคริปต์ shell หรือแปลงคำค้นตรงตัวอย่าง price (USD) ให้เป็นนิพจน์ปรกติที่จับคู่ได้ตรงทุกตัวอักษร

วิธีใช้

  1. เลือก Escape หรือ Unescape
  2. เลือกภาษาหรือรูปแบบ
  3. วางข้อความลงในช่องป้อนข้อมูลหรือกด ตัวอย่าง ผลลัพธ์จะอัปเดตขณะพิมพ์
  4. คัดลอกผลลัพธ์ หรือกด ใช้เป็นข้อมูลป้อน เพื่อแปลงกลับและตรวจว่าได้ข้อความเดิม

สำหรับ 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 ทำงานในเบราว์เซอร์ และไม่มีการส่งข้อมูลใดไปยังเซิร์ฟเวอร์