Encode và decode URL online
Kết quả sẽ hiển thị ở đây...
encodeURIComponent - Encode tất cả ký tự đặc biệt (dùng cho query params)
encodeURI - Giữ nguyên :, /, ?, & (dùng cho full URL)
Công cụ URL Encoder/Decoder online miễn phí của Tấn Phát Digital giúp bạn mã hóa (encode) và giải mã (decode) URL một cách chính xác và an toàn. Hỗ trợ hai phương thức chuẩn JavaScript: encodeURIComponent cho query parameters và encodeURI cho full URL. Xử lý hoàn hảo tiếng Việt có dấu, ký tự đặc biệt (&, =, ?, #, %, +, dấu cách), và Unicode. Hiển thị rõ sự khác biệt giữa hai phương thức encode. Copy kết quả với một click. Xử lý hoàn toàn offline trên trình duyệt, đảm bảo bảo mật dữ liệu.
URL (Uniform Resource Locator) theo chuẩn RFC 3986 chỉ cho phép một số ký tự ASCII nhất định: chữ cái (a-z, A-Z), số (0-9), và một số ký tự đặc biệt (-, _, ., ~). Tất cả ký tự khác như dấu cách, tiếng Việt, ký tự đặc biệt (&, =, ?, #) phải được mã hóa thành dạng percent-encoding (%XX) để truyền qua URL an toàn. Nếu không encode, URL có thể bị hiểu sai hoặc gây lỗi. Ví dụ: 'name=Tấn Phát' nếu không encode sẽ bị lỗi vì dấu cách và tiếng Việt. Sau khi encode: 'name=T%E1%BA%A5n%20Ph%C3%A1t'. Decode cần thiết khi bạn nhận URL đã encode và muốn đọc nội dung gốc.
encodeURI dùng để encode TOÀN BỘ URL. Nó giữ nguyên các ký tự cấu trúc URL: : (protocol), / (path separator), ? (query start), & (param separator), = (key-value separator), # (hash). Ví dụ: encodeURI('https://example.com/path?name=Tấn Phát') → 'https://example.com/path?name=T%E1%BA%A5n%20Ph%C3%A1t'. encodeURIComponent dùng để encode GIÁ TRỊ trong query string. Nó mã hóa TẤT CẢ ký tự đặc biệt bao gồm cả :, /, ?, &, =. Ví dụ: encodeURIComponent('https://example.com') → 'https%3A%2F%2Fexample.com'. Dùng encodeURIComponent khi giá trị có thể chứa các ký tự cấu trúc URL.
Percent-encoding (còn gọi URL encoding) là cách biểu diễn ký tự không an toàn trong URL bằng dấu % theo sau là 2 hex digits. Ví dụ: Space → %20, & → %26, = → %3D, ? → %3F, # → %23, % → %25. Tiếng Việt và Unicode được encode theo UTF-8: mỗi byte của UTF-8 representation được encode riêng. Ví dụ: 'ệ' trong UTF-8 là 3 bytes (E1 BB 87), encode thành %E1%BB%87. Đây là lý do tiếng Việt encode ra chuỗi dài.
Theo RFC 3986, các ký tự sau KHÔNG cần encode: Unreserved characters: A-Z, a-z, 0-9, - (hyphen), _ (underscore), . (period), ~ (tilde). Reserved characters (có ý nghĩa đặc biệt): : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Reserved characters chỉ cần encode khi dùng với nghĩa khác (ví dụ: & trong giá trị query param). Tất cả ký tự khác (space, tiếng Việt, <, >, {, }, |, \, ^, `) PHẢI được encode.
Double encoding xảy ra khi encode một string đã được encode. Ví dụ: 'hello world' → encode → 'hello%20world' → encode lại → 'hello%2520world'. %20 bị encode thành %2520 (% → %25). Điều này gây lỗi khi decode vì server chỉ decode 1 lần. Cách tránh: Luôn decode trước khi encode nếu không chắc chắn string đã encode chưa. Hoặc check xem string có chứa %XX patterns không. Một số servers tự động handle double encoding, nhưng không nên rely vào điều này.
JavaScript: encodeURIComponent(), encodeURI(), decodeURIComponent(), decodeURI(). Python: urllib.parse.quote(), urllib.parse.unquote(), urllib.parse.urlencode(). PHP: urlencode(), rawurlencode(), urldecode(). Java: URLEncoder.encode(), URLDecoder.decode(). C#: HttpUtility.UrlEncode(), Uri.EscapeDataString(). Lưu ý: Mỗi ngôn ngữ có thể có slight differences trong cách handle certain characters (đặc biệt là space: + vs %20).
1. API Calls: Encode query parameters trước khi gửi request. 2. Form Submissions: Browser tự động encode form data, nhưng cần encode khi build URL manually. 3. Redirect URLs: Khi URL chứa URL khác (return_url=https://...), URL bên trong phải được encode. 4. Deep Links: Mobile deep links thường chứa parameters cần encode. 5. Email/SMS Links: Ký tự đặc biệt trong link có thể bị email clients xử lý sai. 6. Analytics Tracking: UTM parameters với special characters. 7. Search Queries: User input trong search box cần encode trước khi đưa vào URL.
encodeURI giữ nguyên các ký tự cấu trúc URL (:, /, ?, &, =, #), dùng cho full URL. encodeURIComponent mã hóa TẤT CẢ ký tự đặc biệt, dùng cho giá trị trong query string. Ví dụ: nếu value là 'a&b=c', dùng encodeURIComponent để & và = không bị hiểu là separators.
Cả hai đều valid nhưng trong contexts khác nhau. %20 là chuẩn RFC 3986 cho URLs. + là chuẩn application/x-www-form-urlencoded (HTML forms). encodeURIComponent dùng %20. Khi decode, cả %20 và + đều thành space. Best practice: dùng %20 cho URLs, + cho form data.
Tiếng Việt (và Unicode nói chung) được encode theo UTF-8. Mỗi ký tự tiếng Việt có dấu chiếm 2-3 bytes trong UTF-8, mỗi byte encode thành 3 ký tự (%XX). Ví dụ: 'ệ' = 3 bytes UTF-8 = %E1%BB%87 (9 ký tự). Đây là lý do URLs tiếng Việt rất dài sau khi encode.
Double encoding xảy ra khi encode string đã encode: %20 → %2520. Gây lỗi vì server chỉ decode 1 lần, kết quả là %20 thay vì space. Cách tránh: decode trước khi encode nếu không chắc, hoặc check string có %XX patterns không. Công cụ này có thể decode trước rồi encode lại để tránh double encoding.
KHÔNG nên encode toàn bộ URL bằng encodeURIComponent vì sẽ encode cả :// và /. Dùng encodeURI cho full URL (giữ cấu trúc). Dùng encodeURIComponent CHỈ cho values trong query string. Ví dụ: 'https://example.com?name=' + encodeURIComponent('Tấn Phát').
KHÔNG. URL encoding (percent-encoding) encode từng ký tự không an toàn thành %XX. Base64 encode binary data thành ASCII string dùng A-Z, a-z, 0-9, +, /. Mục đích khác nhau: URL encoding cho URLs, Base64 cho binary data. Base64 output vẫn có thể cần URL encode nếu đưa vào URL (vì có + và /).
Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.
Tạo file .env và .env.example cho dự án.
Tạo .gitignore cho Node.js, Python, Java.
Tạo mock JSON data cho API testing.
Format và phân tích API response.
Test REST API: GET, POST, PUT, DELETE.
Chuyển đổi Binary, Hex, Base32.
Mã hóa/giải mã Base64.
Chuyển đổi Decimal, Binary, Hex.
Tạo CSS box-shadow trực quan.
Tính quyền file Linux.
Kiểm tra WCAG accessibility.
Tạo bảng màu ngẫu nhiên.