DevToolPal
VI

Escape và unescape chuỗi

Escape hoặc unescape chuỗi cho JSON, JavaScript, Java/C#, Python, SQL, CSV, XML, biểu thức chính quy và lệnh shell.

Chạy cục bộ, không bao giờ tải lên

Tùy chọn

Chế độ

Đầu vào

0 ký tự · 0 B

Đầu ra

0 ký tự · 0 B

Công cụ làm gì

Công cụ escape chuỗi chuyển văn bản thành dạng có thể đặt bên trong chuỗi ký tự trong mã, và chuyển chuỗi đã escape trở lại văn bản thường. Công cụ hỗ trợ chín đích: JSON, JavaScript, Java và C#, Python, chuỗi SQL, trường CSV, văn bản và thuộc tính XML, biểu thức chính quy và lệnh shell POSIX. Mỗi đích tuân theo quy tắc của ngôn ngữ đó, nên kết quả có thể dán thẳng vào mã mà không gây lỗi cú pháp.

Các cách dùng thường gặp: đưa thông báo nhiều dòng hoặc đường dẫn Windows vào tệp cấu hình JSON, nhúng một đoạn HTML vào chuỗi JavaScript, đặt tên tệp có dấu cách trong nháy cho script shell, hoặc biến cụm tìm kiếm như price (USD) thành biểu thức chính quy khớp chính xác với nó.

Cách dùng

  1. Chọn Escape hoặc Unescape.
  2. Chọn ngôn ngữ hoặc định dạng.
  3. Dán văn bản vào ô nhập hoặc nhấn Mẫu. Kết quả cập nhật ngay khi bạn gõ.
  4. Sao chép kết quả hoặc nhấn Dùng làm đầu vào để chuyển ngược lại và kiểm tra xem có ra đúng bản gốc không.

Với JSON, JavaScript, Java/C# và Python, bạn còn có thể escape mọi ký tự ngoài ASCII để có một chuỗi ASCII thuần, không bị lỗi với bất kỳ bảng mã tệp nào.

Ví dụ

Cùng một dòng được escape cho các đích khác nhau:

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'

Quy tắc của từng định dạng

  • JSON: escape dấu nháy, dấu gạch chéo ngược và ký tự điều khiển, giống hệt JSON.stringify.
  • JavaScript: escape thêm nháy đơn, dấu backtick, tab dọc và các ký tự phân tách dòng U+2028, U+2029.
  • Java / C#: escape bằng gạch chéo ngược và \uXXXX; khi unescape còn chấp nhận escape bát phân của Java và \x, \U của C#.
  • Python: escape bằng gạch chéo ngược với \x, \u và \U; escape không xác định được giữ nguyên.
  • SQL: nhân đôi dấu nháy đơn theo chuẩn chuỗi SQL.
  • CSV: bọc giá trị trong nháy kép và nhân đôi nháy bên trong khi giá trị chứa dấu phẩy, dấu nháy, xuống dòng hoặc khoảng trắng ở hai đầu.
  • XML: thay năm thực thể định nghĩa sẵn; khi unescape còn giải mã tham chiếu ký tự dạng số.
  • Biểu thức chính quy: thêm gạch chéo ngược trước mọi ký tự có ý nghĩa đặc biệt để mẫu khớp đúng nguyên văn.
  • Shell: bọc giá trị trong nháy đơn, nơi shell POSIX không mở rộng gì cả, và viết nháy đơn bên trong thành '\''.

Câu hỏi thường gặp

› Escape một chuỗi nghĩa là gì?

Một số ký tự có ý nghĩa đặc biệt trong chuỗi ký tự, như dấu nháy kết thúc chuỗi hoặc ký tự xuống dòng. Escape thay chúng bằng một chuỗi an toàn, thường là dấu gạch chéo ngược cùng một chữ cái, để chuỗi có thể dán vào mã nguồn, câu truy vấn hay tệp mà không làm hỏng nó.

› Có cần dán cả dấu nháy bao quanh chuỗi không?

Không. Chỉ dán phần nội dung. Kết quả escape là phần nằm giữa hai dấu nháy trong mã của bạn. Với CSV và shell, vốn đặt cả giá trị trong nháy, công cụ sẽ tự thêm dấu nháy bên ngoài khi cần.

› Escape SQL có đủ để chống SQL injection không?

Nhân đôi dấu nháy đơn tạo ra một chuỗi SQL hợp lệ, hữu ích khi viết truy vấn bằng tay hoặc chuẩn bị script migration. Trong mã ứng dụng, hãy luôn dùng truy vấn tham số hóa hoặc prepared statement thay vì ghép chuỗi SQL.

› Vì sao unescape báo chuỗi escape không xác định?

Mỗi ngôn ngữ chấp nhận các chuỗi escape khác nhau. Ví dụ JSON không có \x hay \0, nên công cụ chỉ ra vị trí của chuỗi đầu tiên mà ngôn ngữ đã chọn sẽ từ chối. Python giữ nguyên các escape lạ như \d, giống hệt trình thông dịch Python.

› Văn bản của tôi có bị tải lên không?

Không. Escape và unescape chạy trong trình duyệt và không gửi gì lên máy chủ.