Phòng chẩn đoán ký tự

Phát Hiện Ký Tự Ẩn Unicode

Dán văn bản → Quét → Xem ký tự ẩn được tô sáng với nhãn màu. Miễn phí, tức thì, riêng tư.

20+ loạiTức thìMiễn phíRiêng tư
Ctrl+Enter để quét nhanh

Tải ví dụ mẫu

Khoảng trắng zero-width
Nhấn để tải vào trình quét
Tấn công RTL Override
Nhấn để tải vào trình quét
Nhiều ký tự ẩn
Nhấn để tải vào trình quét
Văn bản sạch
Nhấn để tải vào trình quét

Bảng tra cứu ký tự ẩn

TênNguy hiểmMục đích
Zero-Width SpaceU+200BhighNgắt từ dài mà không thấy khoảng trắng
Zero-Width Non-JoinerU+200ChighNgăn nối chữ trong tiếng Ả Rập/Ấn Độ
Zero-Width JoinerU+200DhighTạo emoji ghép hoặc nối ký tự
Byte Order MarkU+FEFFmediumĐánh dấu file là UTF-8/UTF-16
Soft HyphenU+00ADmediumGợi ý điểm gạch nối khi xuống dòng
RTL OverrideU+202EhighÉp hướng văn bản phải-sang-trái
Non-Breaking SpaceU+00A0lowNgăn xuống dòng giữa các từ
Line SeparatorU+2028mediumKý tự ngắt dòng Unicode (lỗi trong JS)

Khi nào cần kiểm tra ký tự ẩn

URL đáng ngờ trông bình thường nhưng chuyển hướng khác — tấn công RTL override đảo ngược tên file hiển thị.

Văn bản sao chép từ PDF hoặc web thường mang ký tự định dạng ẩn làm hỏng tìm kiếm và so sánh.

Mã nguồn có khoảng trắng zero-width gây lỗi biên dịch không thể nhìn thấy bằng mắt.

Dữ liệu JSON/CSV có BOM hoặc joiner ẩn sẽ lỗi phân tích dù nội dung trông hợp lệ.

Tên người dùng và mật khẩu có ký tự ẩn có thể vượt qua bộ lọc bảo mật hoặc gây lỗi xác thực.

Ký tự ẩn Unicode là gì?

Ký tự ẩn (hidden characters) là những ký tự Unicode không có biểu diễn hình ảnh trực quan nhưng vẫn tồn tại trong văn bản. Chúng chiếm dung lượng dữ liệu, ảnh hưởng đến cách trình bày văn bản, và có thể gây ra nhiều lỗi khó phát hiện trong lập trình, xử lý dữ liệu, và bảo mật.

Unicode định nghĩa hàng trăm ký tự điều khiển và định dạng, nhưng phổ biến nhất là nhóm zero-width (khoảng trắng không chiều rộng), nhóm whitespace đặc biệt, và nhóm bidi (bidirectional) dùng cho ngôn ngữ viết từ phải sang trái.

Các loại ký tự ẩn phổ biến

1. Nhóm Zero-Width

U+200B (Zero-Width Space), U+200C (ZWNJ), và U+200D (ZWJ) là ba ký tự nguy hiểm nhất. Chúng hoàn toàn vô hình, không chiếm không gian hiển thị, nhưng thay đổi cách xử lý văn bản. ZWJ được dùng hợp lệ trong emoji ghép (gia đình, cờ quốc gia), nhưng cũng bị lạm dụng để tạo URL phishing trông giống URL thật.

2. Byte Order Mark (BOM)

U+FEFF ban đầu dùng để đánh dấu thứ tự byte trong file UTF-16. Ngày nay, BOM thường xuất hiện vô tình ở đầu file UTF-8 khi lưu bằng một số text editor trên Windows. BOM trong file JSON hoặc CSV gây lỗi parser khó hiểu vì ký tự đầu tiên của file không phải là { hay header mà là ký tự vô hình.

3. Nhóm Bidi (Bidirectional)

RTL Override (U+202E) ép văn bản hiển thị từ phải sang trái. Đây là kỹ thuật tấn công phổ biến: file invoice_‮fdp.exe hiển thị như invoice_exe.pdf trên nhiều hệ điều hành, lừa người dùng mở file thực thi nguy hiểm.

4. Khoảng trắng đặc biệt

Non-Breaking Space (U+00A0), En Space, Em Space, Thin Space, và Hair Space trông giống khoảng trắng thường nhưng có chiều rộng khác nhau. Chúng thường xuất hiện khi sao chép từ PDF, Word, hoặc trang web có định dạng đặc biệt. Khi so sánh chuỗi, "hello world" (dùng NBSP) khác "hello world" (dùng space thường) dù trông hoàn toàn giống nhau.

Ký tự ẩn trong bảo mật

Ký tự ẩn là vũ khí yêu thích trong các cuộc tấn công phishing và social engineering. Một số kỹ thuật phổ biến:

  • Homograph attack: Kết hợp ký tự ẩn với ký tự Unicode giống chữ Latin để tạo domain giả.
  • RTL override: Đảo ngược phần mở rộng file để ẩn định dạng thật (.exe thành .pdf).
  • Zero-width injection: Chèn ZWSP vào username hoặc password để bypass danh sách đen.
  • Watermarking: Chèn tổ hợp ký tự ẩn duy nhất vào tài liệu để theo dõi nguồn rò rỉ.

Cách phòng tránh trong lập trình

  • Luôn normalize input với String.prototype.normalize() trước khi xử lý.
  • Dùng regex để loại bỏ ký tự điều khiển: /[​-‍­ ]/g
  • Validate file BOM trước khi parse JSON/CSV — strip  ở byte đầu tiên.
  • Hiển thị codepoint (U+XXXX) bên cạnh mỗi ký tự khi debug text processing.
  • Dùng editor có chế độ hiển thị whitespace (VS Code: Toggle Render Whitespace).
  • CI/CD pipeline nên có bước kiểm tra ký tự ẩn trong source code và config files.

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

Công cụ văn bản khác

Unicode Encoder and Decoder — \uXXXX U+XXXX HTML Entity UTF-8 Hex

Encode text to Unicode escape sequences (\uXXXX, U+XXXX, HTML entities, UTF-8 hex) and decode them back to readable text. Supports the full Unicode range including emoji, CJK, Vietnamese diacritics, and all scripts. Free, instant, runs entirely in your browser.

Find and Replace Text Online — Regex Search Replace Tool

Find and replace text online with regex support, case-sensitive matching, whole-word search, and highlighted matches. See match count and replace all or one at a time. Free browser-based tool for writers, developers, and data analysts.

Word Counter — Count Words Characters Sentences Paragraphs

Count words, characters (with and without spaces), sentences, paragraphs, reading time, speaking time, and top keywords in real time. Free word counter for writers, students, and SEO professionals.

Diff Checker — Compare Two Text Blocks Side by Side Online

Compare two blocks of text side by side instantly. See added lines highlighted green, deleted lines red, and unchanged lines gray. Line numbers on both sides, ignore-whitespace toggle, case-insensitive option. Free, private, runs in your browser.

JSON Validator & Formatter — Check & Fix JSON Syntax Online

Validate JSON syntax instantly and see the exact error with line and column numbers. Format (pretty-print) or minify valid JSON. Free, private, runs entirely in your browser.

Case Converter — UPPERCASE lowercase Title camelCase snake_case kebab-case

Convert text between 11 case formats: UPPERCASE, lowercase, Title Case, camelCase, PascalCase, snake_case, kebab-case, and more. Instant copy, free, no signup.

Giới thiệu về Text Tools

Công cụ văn bản xử lý công việc hàng ngày với chuỗi, đoạn văn và tài liệu: đếm từ, đảo ngược ký tự, chuyển đổi case, tạo slug, tách văn bản dài, xem trước Markdown. Những công cụ này thay thế các app desktop riêng biệt và lệnh CLI phức tạp bằng một URL bạn có thể bookmark và dùng không cần setup.

Vì sao nó quan trọng

Người viết, biên tập viên và đội content làm việc với giới hạn text khắp nơi — giới hạn 280 ký tự của Twitter, post LinkedIn 1.300 ký tự tối ưu, abstract học thuật 250 từ, meta description SEO giới hạn 155. Một word counter hiển thị ký tự (có và không dấu cách), từ, câu, đoạn và thời gian đọc cho phép bạn đạt yêu cầu nền tảng mà không chuyển đổi công cụ.

Riêng tư và an toàn

Công cụ text xử lý input hoàn toàn trong trình duyệt. Bản draft blog, hợp đồng pháp lý hay email bảo mật của bạn không bao giờ rời khỏi thiết bị. Ngay cả word counter cũng không truyền text của bạn — nó chạy một hàm đếm đơn giản cục bộ, và thực sự đó là tất cả những gì cần. Nếu một công cụ text tuyên bố 'xử lý' text của bạn trên server của họ, phạm vi rò rỉ dữ liệu rất lớn và hiếm khi được biện minh.

Thực hành tốt

  • Cho SEO title, nhắm 50-60 ký tự bao gồm dấu cách (Google cắt title dài hơn)
  • Meta description hoạt động tốt nhất ở 150-155 ký tự — Google hiển thị ~160 trên desktop, ~120 trên mobile
  • Khi tạo slug, giữ ngắn (3-5 từ), toàn chữ thường, dấu gạch ngang không phải gạch dưới, tránh stop word
  • Markdown preview hữu ích TRƯỚC khi đăng để xác minh heading, link, danh sách render đúng trên nền tảng đích