Mã hóa / Giải mã
Chuyển đổi văn bản giữa Base64, URL, Hex, Binary, HTML entities, Unicode, ROT13, ROT47, Morse, chuỗi ký tự (string literal) của các ngôn ngữ lập trình và nhiều định dạng khác — tất cả cùng lúc chỉ từ một ô nhập. Bạn chỉ cần gõ một lần và kết quả của mọi định dạng sẽ hiện ra ngay cạnh nhau, không phải chọn bộ chuyển đổi trước. Một khung riêng giúp chuyển văn bản thành byte thô ở các bảng mã khác (UTF-16, UTF-32, UTF-7, Latin-1, Windows-1252), đổi tài liệu tiếng Việt cũ gõ bằng TCVN3, VNI, VIQR sang Unicode, sửa lỗi mojibake và đoán bảng mã của một chuỗi byte chưa rõ nguồn gốc.
Các bước sử dụng
- Chọn Mã hóa hoặc Giải mã bằng nút gạt ở phía trên (dùng Mã hóa để biến văn bản thường thành định dạng, Giải mã để đọc ngược văn bản đã mã hóa).
- Gõ hoặc dán văn bản của bạn vào ô nhập. Kết quả cập nhật tức thì cho tất cả định dạng — Base64, Hex, Binary, URL, HTML, Morse, NATO, Braille (UEB Grade 1), chuỗi ký tự cho Python, Go, C#/Java, PHP, shell, SQL, YAML, CSV và regex, cùng nhiều định dạng khác.
- Tìm thẻ định dạng bạn cần (ví dụ Base64, Hex, Morse code) và đọc kết quả của nó.
- Với thẻ IPA (phiên âm tiếng Anh), hãy bấm Tải từ điển (204 KB) một lần. Sau đó thẻ này sẽ chuyển văn bản tiếng Anh của bạn sang bảng ký hiệu ngữ âm quốc tế.
- Nhấn biểu tượng Chép trên bất kỳ thẻ nào để sao chép kết quả đó vào clipboard.
- Nhấn biểu tượng Đưa vào ô nhập (mũi tên đổi chiều) trên một thẻ để đưa giá trị của nó vào ô nhập và tự động đảo chế độ — rất tiện để kiểm tra vòng lặp (mã hóa rồi giải mã lại ngay để đối chiếu).
- Nhấn Xóa để làm trống ô nhập, hoặc nút đảo chiều để chuyển qua lại giữa Mã hóa và Giải mã mà không cần gõ lại.
- Cần byte theo một bảng mã cụ thể? Mở rộng mục Bảng mã ký tự & mã tiếng Việt cũ ngay dưới ô nhập. Mục này có ô nhập riêng và bốn thẻ.
- Văn bản ↔ byte: chọn Văn bản → byte hoặc Byte → văn bản, chọn bảng mã (UTF-8, UTF-16LE/BE, UTF-32LE/BE, UTF-7, ISO-8859-1, Windows-1252, TCVN3 hoặc VNI) và định dạng byte (hex, Base64 hoặc mã phần trăm). Bật Thêm BOM để thêm dấu thứ tự byte vào đầu. Bảng Cùng văn bản ở mọi bảng mã cho thấy từng bảng mã mã hóa văn bản của bạn ra sao; bấm vào tên một bảng mã để chọn nó.
- TCVN3 / VNI / VIQR: chọn TCVN3 (ABC), VNI-Windows hoặc VIQR, rồi chọn Mã cũ → Unicode để đọc tài liệu cũ hoặc Unicode → mã cũ để tạo văn bản mã cũ. Không chắc tài liệu dùng bảng mã nào? Phần xem thử dưới kết quả hiển thị văn bản được đọc theo từng cách — bấm vào cách trông đúng.
- Sửa lỗi mojibake: dán văn bản bị lỗi như
Tiếng Việtrồi chép lại bản đã sửaTiếng Việt. - Nhận diện bảng mã: dán các byte thô (mặc định dạng hex) để nhận danh sách bảng mã có khả năng nhất, kèm lý do và bản xem trước văn bản đã giải mã.
Mẹo
- Mọi thứ chạy ngay trong trình duyệt của bạn — không có gì được tải lên — nên hoàn toàn an toàn cho token, khóa bí mật hay văn bản riêng tư.
- Thẻ hiển thị dòng đỏ "Không giải mã được dữ liệu này" chỉ có nghĩa là văn bản của bạn không hợp lệ với định dạng đó (ví dụ giải mã văn bản ngẫu nhiên như Base64); các thẻ khác vẫn hoạt động bình thường.
- Văn bản dùng mã hóa UTF-8, nên emoji và ký tự không phải Latinh vẫn được mã hóa chính xác trong Base64, Hex, Binary và Unicode escape.
- Dùng Đưa vào ô nhập hai lần liên tiếp (mã hóa → giải mã) để xác nhận một giá trị quay về đúng bản gốc.
- Braille hoạt động theo cả hai chiều như các thẻ khác: mã hóa văn bản thường thành các ô braille Unicode, hoặc dán các ô braille vào ở chế độ Giải mã để đọc ngược ra văn bản.
- Các thẻ chuỗi ký tự cho ra một literal hoàn chỉnh, có sẵn dấu nháy, dán thẳng vào code được:
'it'\''s'cho shell,'O''Brien'cho SQL,"say \"hi\"\n"cho Python, Go hay C#/Java. Ở chế độ Giải mã, các thẻ này nhận literal có hoặc không có dấu nháy bao ngoài, và từ chối những escape mà chính ngôn ngữ đó không chấp nhận. - Shell (POSIX single-quoted) là cách an toàn để truyền một đoạn văn bản bất kỳ thành đúng một tham số: bên trong dấu nháy đơn không có gì bị khai triển, nên
$, dấu backtick và*đều giữ nguyên. - Regex (escape metacharacters) giúp văn bản khớp đúng nguyên văn khi đặt vào một biểu thức chính quy. Chiều giải mã từ chối các lớp như
\d, vì chúng đại diện cho nhiều ký tự chứ không phải một. - ROT47 xoay mọi ký tự ASCII in được chứ không riêng chữ cái, nên chữ số và dấu câu cũng bị xáo trộn; áp dụng hai lần sẽ ra lại bản gốc.
- IPA chỉ phiên âm một chiều nên thẻ này chỉ xuất hiện ở chế độ Mã hóa — không có cách nào đảo ngược từ phiên âm về lại chính tả.
- Từ điển IPA chỉ được tải khi bạn bấm nút nên nó không bao giờ làm nặng thêm trang tải về của những người không dùng tới. Sau khi tải, nó nằm lại suốt phiên truy cập, kể cả khi bạn chuyển sang Giải mã rồi quay lại.
- Những từ không có trong từ điển sẽ được đoán theo cách viết và hiển thị gạch chân màu cam; phía trên thẻ có bộ đếm cho biết số từ như vậy, và rê chuột lên một từ sẽ thấy ghi chú.
- Ký tự mà bảng mã không biểu diễn được sẽ được ghi thành
?và được đếm ngay dưới kết quả — ví dụ emoji trong ISO-8859-1, hay€trong Latin-1 (ký tự này chỉ có trong Windows-1252). - ISO-8859-1 và Windows-1252 chỉ khác nhau ở các byte 0x80–0x9F: Windows-1252 đặt ở đó dấu nháy cong, gạch ngang và
€, còn Latin-1 thật chỉ có mã điều khiển vô hình. Vì vậy nhiều file gọi là "Latin-1" thực ra là Windows-1252. - UTF-7 là dạng Unicode an toàn với kênh 7-bit từng dùng trong e-mail và tên thư mục IMAP:
Hi Mom -☺-!trở thànhHi Mom -+Jjo--!. - Font chữ hoa (.VnTimeH) dành cho văn bản TCVN3 được gõ bằng font chữ hoa như .VnTimeH: các font này vẽ mọi chữ cái thành chữ hoa, nên văn bản sau khi chuyển cũng ra chữ hoa.
- VIQR viết dấu phía sau chữ cái (
Tie^'ng Vie^.t), nên dấu chấm hay dấu hỏi thật đứng ngay sau nguyên âm phải có dấu gạch chéo ngược đứng trước (Hello\.). Bộ chuyển đổi tự thêm và tự đọc các dấu escape này. - Khi Sửa lỗi mojibake không tìm thấy gì để sửa nhưng văn bản trông giống TCVN3 hoặc VNI, công cụ sẽ báo cho bạn — bấm Chuyển đổi để mở văn bản đó trong thẻ tiếng Việt.
Câu hỏi thường gặp
Base64 và Base64 URL-safe khác nhau ở đâu?
Base64 tiêu chuẩn dùng các ký tự +, / và phần đệm =, còn bản URL-safe thay chúng bằng - và _ và bỏ phần đệm, nên kết quả có thể đưa thẳng vào URL hoặc tên tệp.
Vì sao một thẻ hiển thị "Không giải mã được dữ liệu này"?
Bạn đang ở chế độ Giải mã và dữ liệu nhập không hợp lệ với định dạng cụ thể đó (ví dụ văn bản thường không phải là Hex hay Base32 hợp lệ). Hãy chuyển sang chế độ Mã hóa, hoặc sửa lại dữ liệu nhập — các thẻ định dạng khác không bị ảnh hưởng.
Tôi có thể giải mã Morse hoặc NATO phonetic về lại văn bản không?
Có. Chuyển sang chế độ Giải mã và dán mã Morse (dấu chấm/gạch cách nhau bằng khoảng trắng, / cho khoảng cách giữa các từ) hoặc các từ NATO, thẻ tương ứng sẽ dựng lại văn bản gốc.
Escape chuỗi SQL có đủ để chống SQL injection không?
Trong code thật hãy dùng truy vấn tham số hóa (parameterised query) — đó mới là cách khắc phục. Thẻ SQL string literal nhân đôi dấu nháy đơn, đúng chuẩn SQL cho script viết tay và file dữ liệu mẫu, nhưng một số hệ quản trị có thêm quy tắc dấu gạch chéo ngược riêng (MySQL mặc định như vậy), nên chỉ escape thôi thì không phải là hàng rào bảo mật.
Braille UEB Grade 1 là gì?
Là Unified English Braille dạng không rút gọn: mỗi chữ cái, chữ số và dấu câu ứng với đúng một ô braille riêng, không dùng ký hiệu viết tắt nào. Đây là kiểu phiên chuyển từng ký tự một, đúng thứ bạn cần khi làm nhãn hoặc khi cần chuyển đi chuyển lại mà không sai lệch. Kết quả là ký tự braille Unicode thật nên bạn có thể dán đi bất cứ đâu.
Vì sao một số từ IPA có màu cam và gạch chân?
Vì chúng không có trong từ điển phiên âm nên công cụ phải đoán cách phát âm từ cách viết. Với chính tả tiếng Anh thì những phỏng đoán đó sai khá thường xuyên — nhất là tên riêng, thuật ngữ chuyên ngành và từ tự đặt. Chúng được đánh dấu thay vì trộn lẫn im lặng để bạn biết chỗ nào cần kiểm tra lại.
Vì sao IPA phải tải riêng?
Vì một từ điển phiên âm thực thụ nặng khoảng 204 KB, trong khi phần lớn người mở trang này cần Base64 chứ không phải ngữ âm. Đặt nó sau một nút bấm giúp những người khác không phải gánh dung lượng đó.
Mojibake là gì và vì sao lại xảy ra?
Đó là thứ bạn thấy khi văn bản lưu bằng UTF-8 bị mở như Windows-1252 (hoặc Latin-1): hai hay ba byte của mỗi chữ có dấu biến thành hai hay ba ký hiệu chẳng liên quan, nên Tiếng Việt hiện thành Tiếng Việt. Nếu văn bản hỏng đó lại được lưu rồi mở sai thêm lần nữa, lỗi sẽ chồng lên nhau. Công cụ gỡ lỗi theo từng chuỗi byte và lặp lại đến khi không còn gì thay đổi; dòng thông báo màu xanh cho biết đã gỡ bao nhiêu lớp.
Vì sao tài liệu tiếng Việt cũ của tôi hiện thành "TiÕng ViÖt"?
Tài liệu đó được gõ bằng TCVN3 (bộ font ABC như .VnTime), vốn lưu chữ tiếng Việt vào các vị trí byte mà font khác hiển thị thành Õ, Ö… Văn bản kiểu Tieáng Vieät thì là VNI. Hãy dán vào thẻ TCVN3 / VNI / VIQR với chế độ Mã cũ → Unicode để có văn bản Unicode bình thường, hiển thị đúng với mọi font.
Vì sao chữ hoa có dấu thanh bị thành chữ thường khi chuyển sang TCVN3?
Vì TCVN3 không có mã cho chúng — chỉ có mã cho bảy chữ hoa không dấu thanh Ă Â Ê Ô Ơ Ư Đ. Người gõ phải dùng một bộ font chữ hoa riêng để vẽ các mã chữ thường thành chữ hoa. Do đó khi chuyển sang TCVN3, những chữ này được ghi thành chữ thường (số lượng được hiển thị), còn khi chuyển văn bản TCVN3 gõ bằng font như vậy thì cần bật Font chữ hoa (.VnTimeH).
Nhận diện bảng mã có thể sai không?
Có, và công cụ nói rõ điều đó. Một chuỗi byte có thể hoàn toàn hợp lệ ở nhiều bảng mã cùng lúc — văn bản ASCII thuần giống hệt nhau ở hầu hết bảng mã — nên kết quả là phỏng đoán được xếp hạng dựa trên dấu thứ tự byte, tính hợp lệ của UTF-8, cách bố trí byte 0 và tần suất byte. Luôn kiểm tra cột xem trước có đọc đúng không trước khi tin vào kết quả đứng đầu.