Bộ phát hiện ký tự vô hình
Chỉ cần dán bất kỳ đoạn văn bản nào vào công cụ này, hệ thống sẽ tự động phát hiện tất cả các ký tự vô hình có trong đó: khoảng trắng rộng bằng không, dấu chỉ hướng, ký hiệu BOM, dấu gạch nối mềm, khoảng trắng không đứt đoạn, cũng như nhóm các mã kiểm soát Unicode trông giống như không khí trống nhưng lại làm gián đoạn quá trình tìm kiếm, so sánh và sao chép-dán. Mỗi kết quả phát hiện đều đi kèm điểm mã (U+200B), tên chính thức trong Unicode và vị trí tương ứng trong chuỗi văn bản, giúp bạn xác định chính xác vị trí của lỗi bí ẩn trước khi khắc phục nó.
Cách phát hiện các ký tự vô hình
-
1
Dán văn bản
Nhập đoạn mã đáng ngờ, một đoạn mã ngắn, một thông điệp được sao chép hoặc một giá trị cấu hình.
-
2
Thực hiện quét
Công cụ sẽ duyệt từng ký tự trong mã và đánh dấu những ký tự trùng khớp với danh sách các ký tự vô hình hoặc định dạng.
-
3
Xem lại báo cáo
Mỗi ký tự được hiển thị với vị trí của nó (được đánh số từ 1), mã ký tự theo định dạng `U+HHHH` và tên Unicode tương ứng (ví dụ: khoảng trắng rộng bằng không, BOM, v.v.).
-
4
Chức năng làm sạch văn bản
Hãy sử dụng thao tác thay thế để loại bỏ hoặc hiển thị các ký tự ẩn, sau đó dán lại phiên bản đã được xử lý.
Các ký tự vô hình và nguồn gốc của chúng
Những ký tự này tồn tại vì những lý do hợp lý (cấu trúc văn bản, hướng viết ký tự, việc kết hợp các ký tự). Chúng sẽ trở thành lỗi khi thoát ra khỏi bối cảnh được thiết kế và xuất hiện trong mã nguồn, tệp cấu hình, truy vấn tìm kiếm hoặc tên người dùng.
Các ký tự mà bộ phát hiện tìm kiếm
| Mã điểm | Tên | Nơi thường xuyên xuất hiện ẩn giấu |
|---|---|---|
U+200B |
Khoảng trắng rộng bằng không | Các trình soạn thảo văn bản phong phú, phần mềm xử lý văn bản |
U+200C |
Không có đường nối ở độ rộng bằng không | Phông chữ Ba Tư và Hindi |
U+200D |
Bộ nối độ rộng bằng không | Chuỗi emoji, các hệ chữ Ấn (Indic) |
U+200E |
Dấu phân cách từ trái sang phải | Văn bản chứa cả kiểu viết LTR và RTL |
U+200F |
Dấu phân cách từ phải sang trái | Cùng một giá trị |
U+202A..E |
Nhúng / thay thế | Tương tự; đôi khi được sử dụng một cách độc hại (nguồn mã Trojan) |
U+2028 |
Ký hiệu phân cách dòng | Sao chép từ Word, có thể làm gián đoạn các bộ mã hóa JSON |
U+2029 |
Ký hiệu phân đoạn đoạn văn | Cùng một giá trị |
U+FEFF |
Dấu hiệu thứ tự byte | Các tệp được lưu dưới định dạng UTF-8 kèm BOM trong Notepad |
U+00A0 |
Khoảng trắng không bị đứt | Khoảng trắng kiểu chữ từ Word |
U+00AD |
Dấu gạch nối mềm | Các gợi ý về việc thêm dấu gạch nối trong văn bản phong phú |
Các triệu chứng phổ biến của lỗi ký tự ẩn
- Phép so sánh chuỗi mà “lẽ ra” phải bằng nhau lại không bằng nhau. Hãy sao chép các giá trị vào công cụ này và kiểm tra số lượng byte.
- Một biểu thức chính quy (regex) trông có vẻ khớp bằng mắt thường nhưng lại thất bại trong mã nguồn. Thường là một ký tự
U+00A0giả dạng khoảng trắng. - Trình phân tích JSON gặp sự cố với một payload được dán vào. Thường là một BOM ở đầu, hoặc
U+2028trong một chuỗi ký tự mà JavaScript từ chối bên trong JSON. - Tiêu đề SEO có độ dài không đúng. Khoảng trắng rộng bằng không khiến tiêu đề vượt quá giới hạn mà không gây ra bất kỳ thay đổi nào rõ ràng.
Góc nhìn về tấn công Trojan Source
Các ký tự vượt quyền hai chiều (U+202E, U+2066…, U+2069) có thể khiến mã nguồn hiển thị theo một thứ tự nhất định nhưng lại được biên dịch theo thứ tự khác – đây là một dạng tấn công thuộc nhóm “Tấn công mã nguồn Trojana”. Khi xem xét mã từ các nhà đóng góp không đáng tin cậy, hãy chạy các bản so sánh thay đổi của họ qua công cụ phát hiện này trước khi hợp nhất.
Câu hỏi thường gặp
Notepad và một số công cụ Windows cũ hơn mặc định sử dụng định dạng “UTF-8 kèm BOM”. Định dạng BOM (U+FEFF) phù hợp với các ứng dụng Windows, nhưng lại không tương thích với nhiều quy trình xử lý lệnh shell, các tệp PHP (trong đó BOM được hiển thị như kết quả đầu ra trước thẻ <?php) cũng như các bộ phân tích dữ liệu JSON.
Nó trông giống như một ký tự không gian thông thường trên màn hình nhưng lại hoạt động khác biệt: không cho phép chuyển dòng và không tương thích với hầu hết các biến thể regex của \s ở mọi ngôn ngữ. Ký tự này thường xuất hiện trong các đường dẫn tệp, địa chỉ email và tên người dùng được sao chép từ các nguồn văn bản phong phú.
Không phải lúc nào cũng vậy. Trong văn bản tiếng Ả Rập, tiếng Ba Tư hoặc chữ Devanagari, các thành phần nối có độ rộng bằng không và không nối đều là bắt buộc về mặt ngữ nghĩa. Trong mã nguồn, tệp cấu hình và hầu hết các văn bản tiếng Anh, hãy loại bỏ chúng một cách tự do. Đối với nội dung ngôn ngữ tự nhiên, hãy sử dụng công cụ phát hiện để kiểm tra trước khi thực hiện việc loại bỏ.
Không, phân tích chỉ được thực hiện đối với yêu cầu hiện tại; bất kỳ nội dung nào bạn dán vào cũng sẽ không được lưu trữ hay ghi nhật ký sau khi phản hồi được tạo ra.
Công cụ liên quan
Trình tìm cờ emoji
Tìm emoji cờ của 195 quốc gia theo tên địa phương, tên tiếng Anh hoặc mã hai chữ cái. Kiểm tra chuỗi Unicode và sao chép ngay trong trình duyệt.
Ký hiệu mũi tên để sao chép
Sao chép các mũi tên Unicode phổ biến chỉ với một lần nhấp: thẳng, đôi, chéo, móc, vòng và tam giác cho tài liệu, chat và thiết kế.
Công cụ đếm từ
Đếm số từ, ký tự, câu và đoạn văn kèm thời gian đọc, thời gian nói, mật độ từ khóa và điểm dễ đọc Flesch cho bài luận, bài đăng, chú thích và meta description.
Ký hiệu nhỏ hơn hoặc bằng
Sao chép ký hiệu ≤ cùng các ký hiệu so sánh toán học liên quan. Bao gồm Unicode, thực thể HTML và cú pháp LaTeX cho bảng tính, tài liệu nghiên cứu và trang web.
Bộ tạo phông chữ Discord
Chuyển văn bản bình thường thành các kiểu chữ Unicode phù hợp với tên dùng trong Discord, tên máy chủ và tin nhắn, bao gồm các dạng đậm, nghiêng, fraktur, monospace và dạng trang trí.
Trình dịch chữ nổi Braille
Dịch văn bản sang chữ nổi Braille Unicode cấp 1 và giải mã Braille trở lại thành chữ cái. Xử lý chữ hoa, chữ số và dấu câu.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Detektor niewidzialnych znaków [PL]
- เครื่องตรวจจับตัวอักษรที่มองไม่เห็น [TH]
- Detector de Caracteres Invisíveis [PT]
- Detektor Karakter Tak Terlihat [ID]
- Detektor för osynliga tecken [SV]
- 不可視文字検出器 [JA]
- أداة كشف الأحرف غير المرئية [AR]
- Unsichtbarer Zeichendetektor [DE]
- Detector de Caracteres Invisibles [ES]
- Détecteur de caractères invisibles [FR]
- 보이지 않는 문자 탐지기 [KO]
- Onzichtbare karakter detector [NL]
- 不可见字符检测器 [ZH]
- Invisible Character Detector [EN]
- Rilevatore di Caratteri Invisibili [IT]
- Обнаружитель невидимых символов [RU]
- Görünmez Karakter Tespit Cihazı [TR]