Mã hóa URL hoạt động thế nào
Địa chỉ web chỉ cho phép một số ít ký tự: chữ không dấu, chữ số và vài dấu câu. Mọi thứ khác đều bị mã hóa. Chữ ệ trong UTF-8 gồm ba byte E1, BB và 87, nên thành %E1%BB%87. Dấu cách thành %20, hoặc + trong biểu mẫu.
Đã mã hóa
Ph%E1%BB%9F b%C3%B2 H%C3%A0 N%E1%BB%99i
Đã giải mã
Phở bò Hà Nội
Các mã URL thường gặp
%C4%83= ă,%C3%A2= â,%C3%AA= ê,%C3%B4= ô%C6%A1= ơ,%C6%B0= ư,%C4%91= đ,%C4%90= Đ%E1%BA%A1= ạ,%E1%BA%A3= ả,%E1%BA%BF= ế,%E1%BB%AF= ữ%20= dấu cách,%2F= /,%3F= ?,%26= &,%25= %
Chữ tiếng Việt có dấu thường mất hai hoặc ba byte. Chữ có thêm dấu thanh như ệ, ế, ạ thường bắt đầu bằng %E1%BA hoặc %E1%BB. Còn đ, ơ, ư bắt đầu bằng %C4 hoặc %C6. Nhìn thấy các đầu mã này là gần như chắc chắn đó là tiếng Việt mã hóa URL. Hệ thống cũ mã hóa theo Windows-1258, mỗi chữ một byte và dấu thanh tách riêng: Vi%EA%F2t thay vì Vi%E1%BB%87t. Mojibuster cũng nhận ra và đổi thành Việt.
Văn bản mã hóa URL từ đâu ra
- Liên kết sao chép: trình duyệt hiển thị
vi.wikipedia.org/wiki/Hà_Nộidễ đọc, nhưng khi sao chép thường raH%C3%A0_N%E1%BB%99i. - Biểu mẫu và theo dõi: từ khóa tìm kiếm và tham số UTM được lưu dưới dạng mã trong nhật ký máy chủ và file xuất từ công cụ phân tích, ví dụ
?q=ph%E1%BB%9F. - Xuất dữ liệu và API: một số công cụ email marketing, webhook và API lưu giá trị đã mã hóa; khi đó file CSV chứa mã thay vì tên người.
- Tên file: file tải về tên là
Hoa%20don%20%C4%90%E1%BB%A9c.pdfkhi máy chủ không giải mã tên.
Mã và ký tự lỗi cùng lúc
Đôi khi văn bản hỏng hai lần: Vi%C3%A1%C2%BB%E2%80%A1t là Việt được mã hóa URL, tức một chữ ệ bị đọc sai rồi mới bị mã hóa. Mojibuster giải mã trước, rồi sửa lỗi ký tự. Cuối cùng ra lại Việt. Về lỗi font của văn bản cũ, xem sửa lỗi font tiếng Việt.
Tùy chọn Chuyển cả mã đã được bật sẵn trên trang này. Nó cũng chuyển mã HTML (ệ), mã email (=E1=BB=87) và chuỗi thoát trong mã nguồn (\u1ec7). Các lỗi ký tự khác: mojibake là gì.
Tự giải mã trong Excel, JavaScript, Python và PHP
- Excel: chỉ có hàm để mã hóa (
ENCODEURLtrong bản tiếng Anh), không có hàm giải mã. Dễ nhất: sao chép cột, dán vào đây rồi sao chép kết quả về. Xem thêm lỗi font trong Excel. - JavaScript:
decodeURIComponent('Vi%E1%BB%87t')cho raViệt. - Python:
urllib.parse.unquote('Vi%E1%BB%87t'), hoặcunquote_pluscho dữ liệu biểu mẫu có+là dấu cách. - PHP:
rawurldecode(), hoặcurldecode()cho dữ liệu biểu mẫu.
Câu hỏi thường gặp
%E1%BB%87 nghĩa là gì?
Đó là chữ ệ trong mã hóa URL: ba byte UTF-8 E1, BB và 87, mỗi byte có % đứng trước. Tương tự %E1%BA%A1 là ạ và %C4%91 là đ.
%20 nghĩa là gì?
Một dấu cách. Trong dữ liệu biểu mẫu người ta hay dùng + thay thế. Mojibuster giữ nguyên +, vì trong văn bản thường nó có thể là dấu cộng thật.
Liên kết của tôi có bị tải lên không?
Không. Việc chuyển đổi diễn ra hoàn toàn trong trình duyệt. Liên kết có token, địa chỉ email hay dữ liệu cá nhân không rời khỏi thiết bị của bạn.
Vì sao 100% không bị đổi?
Mojibuster chỉ chuyển những chuỗi cho ra ký tự đặc biệt thật. 100%, 50 % hay một %20 đứng riêng trong văn bản thường được giữ nguyên.