Ngôn ngữ: Tiếng Việt

tools / escape

escape/

Escape và unescape HTML entity, Unicode \uXXXX và chuỗi JS.

Văn bản gốc

Kết quả escape

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

Escape HTML entity, Unicode và chuỗi JS khác nhau thế nào

Đây là ba cách viết khác nhau, chọn theo nơi văn bản sẽ được đặt vào. HTML entity viết dạng & <, dùng để đưa văn bản vào trang web một cách an toàn; escape Unicode viết dạng mã điểm như \u4f60, thường gặp trong JSON và log; escape chuỗi JS xử lý dấu nháy, dấu gạch chéo ngược và xuống dòng, để đưa văn bản vào mã JavaScript.

Escape HTML xử lý những ký tự nào, chữ tiếng Việt có dấu có bị đổi không

Chỉ chuyển 5 ký tự: & thành &amp;, < thành &lt;, > thành &gt;, dấu nháy kép thành &quot;, dấu nháy đơn thành &#39;. Chữ tiếng Việt có dấu, dấu cách, xuống dòng và các ký tự khác đều giữ nguyên, không bị đổi thành dạng như &#x4E2D;. Khi đặt vào nội dung HTML hoặc giá trị thuộc tính có dấu nháy, những ký tự cần escape chính là năm ký tự này.

Vì sao sau khi unescape HTML, một số &xxx; vẫn không đổi

Entity có tên mà công cụ không nhận ra sẽ được giữ nguyên, không báo lỗi. Công cụ tích hợp sẵn một bộ phổ biến (chữ cái Latin, chữ cái Hy Lạp, dấu câu, tiền tệ, mũi tên, ký hiệu toán học...), tên phân biệt chữ hoa chữ thường và không được bỏ dấu chấm phẩy ở cuối. Gặp tên chưa có sẵn, hãy đổi sang entity số như &#20013; hoặc &#x4E2D; là giải được. Entity số có mã điểm bằng 0, vượt quá 10FFFF hoặc nằm trong vùng surrogate sẽ biến thành ký tự thay thế �.

Escape Unicode dùng thế nào, vì sao emoji lại thành hai đoạn \u

Escape Unicode chỉ xử lý ký tự không phải ASCII; chữ cái tiếng Anh, chữ số và ký hiệu giữ nguyên, nên "你好 abc" sẽ thành \u4f60\u597d abc, chữ số hex viết thường. Ký tự nằm ngoài BMP như emoji được tách thành cặp surrogate theo cách của JavaScript, viết thành hai đoạn như \ud83d\ude00. Khi unescape, cả hai cách viết \uXXXX và \u{…} đều được nhận, các cặp surrogate liền nhau được gộp lại thành một ký tự; \u sai định dạng sẽ được giữ nguyên, không báo lỗi.

Kết quả escape chuỗi JS có dán thẳng vào mã được không

Chỉ cần bọc dấu nháy bên ngoài, nháy đơn hay nháy kép đều dùng được vì cả hai loại đều đã được escape. Dấu gạch chéo ngược, xuống dòng, tab sẽ thành \\ \n \t, các ký tự điều khiển khác được viết thành \xHH, còn ký tự không phải ASCII (như chữ tiếng Việt có dấu) không bị escape. Dấu backtick và ${ không bị escape, nếu đặt vào template string thì bạn cần tự xử lý.

Unescape báo "Ký tự thứ N: …" nghĩa là gì

Nghĩa là sau dấu gạch chéo ngược ở vị trí đó viết không hợp lệ. Chế độ chuỗi JS yêu cầu sau \x có hai chữ số hex, sau \u có bốn chữ số hex (hoặc 1 đến 6 chữ số trong \u{…}), không hỗ trợ escape bát phân như \1 đến \7, và để một dấu gạch chéo ngược lẻ ở cuối cũng sẽ báo lỗi. Nguyên nhân thường gặp là dán vào đường dẫn Windows, ví dụ \u trong C:\users không phải là escape hợp lệ; dấu gạch chéo ngược trong đường dẫn vốn không cần unescape.

Kết quả escape có dùng làm chuỗi JSON được không

Unescape thì được, escape thì không. Các chuỗi như \n, \", \/, \uXXXX trong chuỗi JSON đều có thể khôi phục thành văn bản gốc bằng unescape kiểu "Chuỗi JS". Nhưng chiều escape sẽ viết dấu nháy đơn thành \' và ký tự điều khiển thành \xHH, JSON không chấp nhận cả hai; muốn tạo chuỗi JSON hợp lệ, hãy dùng JSON.stringify.

Văn bản có bị tải lên không, dán nội dung không rõ nguồn gốc có an toàn không

Không tải lên, escape và unescape đều chạy trong trình duyệt và không giới hạn số ký tự; khi nhập quá 1 triệu ký tự, trang sẽ đợi bạn dừng 0,5 giây rồi mới tính lại. Việc unescape HTML và JS do công cụ tự phân tích từng đoạn, không dùng DOM của trang và không dùng eval, nên dán nội dung như <script> chỉ nhận được văn bản, sẽ không bị thực thi.