Tan Phat Media

URL Encoder - Mã Hóa URL Online

Encode và decode URL online

Input
Output
Kết quả sẽ hiển thị ở đây...
💡 Sự khác biệt

encodeURIComponent - Encode tất cả ký tự đặc biệt (dùng cho query params)

encodeURI - Giữ nguyên :, /, ?, & (dùng cho full URL)

Hợp tác ngay với Tấn Phát Digital

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.

Mã hóa và giải mã URL: chọn đúng giữa encodeURI và encodeURIComponent

Công cụ chuyển chuỗi sang dạng phần trăm và ngược lại, với ba nút tương ứng ba hàm chuẩn của JavaScript. Nút mã hóa thành phần dùng cho từng giá trị tham số, nút mã hóa toàn URL giữ lại các ký tự cấu trúc như dấu hai chấm và dấu gạch chéo, còn nút giải mã đưa chuỗi phần trăm về lại chữ đọc được kể cả tiếng Việt có dấu.

Tính năng nổi bật

  • Mã hóa thành phần bằng encodeURIComponent, đổi cả dấu và, dấu bằng, dấu chéo thành mã phần trăm
  • Mã hóa toàn địa chỉ bằng encodeURI, giữ nguyên các ký tự tạo nên cấu trúc URL
  • Giải mã bằng decodeURIComponent, đưa chuỗi phần trăm trở lại chữ gốc kể cả tiếng Việt có dấu
  • Báo lỗi rõ ràng khi chuỗi đầu vào có chuỗi phần trăm hỏng, thay vì trả về kết quả sai lặng lẽ
  • Khung kết quả tự xuống dòng nên chuỗi dài không bị tràn ngang, đọc được toàn bộ
  • Nút sao chép kết quả xuất hiện ngay khi có đầu ra
  • Thẻ giải thích ngay dưới công cụ nêu khác biệt giữa hai kiểu mã hóa để bạn chọn đúng nút
  • Chạy hoàn toàn bằng JavaScript trong trình duyệt, chuỗi bạn dán vào không gửi lên máy chủ

Vì sao chọn nhầm kiểu mã hóa lại làm hỏng đường dẫn

Hai hàm mã hóa trong JavaScript trông giống nhau nhưng dùng cho hai việc khác hẳn, và đây là nguồn gốc của một lớp lỗi rất khó nhìn ra. Giả sử bạn cần đưa một địa chỉ khác vào tham số chuyển hướng. Nếu dùng nhầm hàm mã hóa toàn địa chỉ, dấu hai chấm và dấu gạch chéo của địa chỉ bên trong sẽ được giữ nguyên, máy chủ đọc sang sẽ thấy một đống dấu chéo lạ và cắt sai tham số. Ngược lại nếu bạn mã hóa cả một địa chỉ hoàn chỉnh bằng hàm dành cho thành phần, dấu hai chấm sau chữ https biến thành mã phần trăm và đường dẫn không còn mở được. Nguyên tắc thì đơn giản: mã hóa thành phần dùng cho từng mảnh giá trị, mã hóa toàn địa chỉ dùng khi bạn đã có một đường dẫn hoàn chỉnh chỉ cần dọn khoảng trắng và chữ có dấu. Công cụ này đặt cả ba nút cạnh nhau để bạn thử cả hai kiểu trên cùng một chuỗi và thấy ngay khác biệt trước khi đưa vào mã nguồn.

Lợi ích khi sử dụng

  • Thử cả hai kiểu mã hóa trên cùng một chuỗi để thấy ngay cái nào đúng
  • Đọc lại được những đường dẫn dài đặc mã phần trăm mà mắt thường chịu
  • Phát hiện chuỗi bị mã hóa hai lần nhờ dấu hiệu có nhiều cụm phần trăm hai lăm
  • Không phải mở bảng điều khiển trình duyệt chỉ để gọi một hàm
  • Chuỗi bạn dán vào nằm nguyên trên máy, không đi qua máy chủ nào

Cách mã hóa và giải mã một chuỗi URL

  1. 1Dán chuỗi cần xử lý vào khung nhập, có thể là cả một đường dẫn hoặc chỉ một giá trị tham số.
  2. 2Bấm mã hóa thành phần nếu chuỗi đó sẽ nằm trong một tham số, ví dụ một từ khóa tìm kiếm hay một địa chỉ đích của lệnh chuyển hướng.
  3. 3Bấm mã hóa toàn địa chỉ nếu bạn đang có một đường dẫn hoàn chỉnh và chỉ muốn dọn khoảng trắng cùng chữ có dấu mà vẫn giữ cấu trúc.
  4. 4Bấm giải mã khi cần đọc lại một chuỗi đầy mã phần trăm, chẳng hạn đường dẫn chép từ thanh địa chỉ hay từ nhật ký máy chủ.
  5. 5Đối chiếu kết quả trong khung đầu ra rồi bấm nút sao chép để dán vào mã nguồn, vào công cụ theo dõi hay vào trình duyệt.

Mã hóa phần trăm hoạt động thế nào

Địa chỉ web theo chuẩn chỉ được phép chứa một tập ký tự hẹp gồm chữ cái không dấu, chữ số và bốn dấu là gạch ngang, dấu chấm, gạch dưới, dấu ngã. Mọi ký tự nằm ngoài tập đó phải được viết lại thành dấu phần trăm kèm hai chữ số hệ mười sáu biểu diễn từng byte của ký tự khi mã hóa theo UTF-8. Khoảng trắng thành phần trăm hai không. Ký tự tiếng Việt chiếm ba byte nên mỗi chữ có dấu nở thành chín ký tự: chữ ấ trong tên Tấn được viết thành phần trăm E1 phần trăm BA phần trăm A5. Đây là lý do một đường dẫn tiếng Việt sau khi mã hóa dài gấp mấy lần bản gốc. Điều đáng nhớ là dấu phần trăm bản thân nó cũng phải được mã hóa thành phần trăm hai năm, nếu không bộ giải mã sẽ hiểu nhầm hai ký tự kế tiếp là mã hệ mười sáu. Chính quy tắc này giải thích vì sao một chuỗi bị mã hóa hai lần trông đầy cụm phần trăm hai năm, và vì sao khi giải mã một lần bạn vẫn chưa đọc được nội dung thật.

Danh sách ký tự mỗi hàm chừa lại

Hàm mã hóa thành phần chừa lại chữ cái, chữ số và mười một ký tự là gạch ngang, gạch dưới, dấu chấm, dấu chấm than, dấu ngã, dấu sao, dấu nháy đơn, hai dấu ngoặc đơn. Mọi thứ còn lại đều bị đổi, kể cả dấu và, dấu bằng, dấu hỏi, dấu thăng, dấu hai chấm, dấu gạch chéo. Hàm mã hóa toàn địa chỉ chừa thêm một nhóm nữa gồm dấu chấm phẩy, gạch chéo, dấu hỏi, hai chấm, a còng, dấu và, dấu bằng, dấu cộng, dấu đô la, dấu phẩy và dấu thăng, vì tất cả những ký tự này đều mang vai trò cấu trúc trong một địa chỉ. Từ đây suy ra một mẹo kiểm tra nhanh: dán một chuỗi có chứa dấu và rồi bấm lần lượt hai nút. Nếu dấu và biến thành phần trăm hai sáu thì bạn đang dùng hàm dành cho thành phần, còn nếu nó nằm nguyên thì bạn đang dùng hàm dành cho toàn địa chỉ. Với giá trị tham số, dấu và bắt buộc phải được mã hóa, nếu không nó sẽ cắt tham số của bạn làm đôi.

Khoảng trắng thành phần trăm hai không hay thành dấu cộng

Đây là điểm khác biệt gây nhầm lẫn nhiều nhất khi làm việc với biểu mẫu. Trong phần đường dẫn và trong chuỗi truy vấn theo chuẩn chung, khoảng trắng được viết thành phần trăm hai không, và đó cũng là thứ hàm mã hóa của JavaScript tạo ra. Nhưng khi trình duyệt gửi một biểu mẫu theo kiểu mã hóa cũ của HTML, khoảng trắng lại được viết thành dấu cộng. Hai cách đều tồn tại và các bộ khung phía máy chủ như PHP hay Java đều hiểu cả hai khi đọc tham số truy vấn. Vấn đề nảy sinh khi bạn lấy một chuỗi từ biểu mẫu, dán vào đây rồi bấm giải mã: dấu cộng sẽ được giữ nguyên chứ không đổi thành khoảng trắng, vì hàm giải mã chuẩn không có quy tắc đó. Nếu bạn thấy kết quả giải mã có những dấu cộng nằm giữa các từ, hãy tự thay chúng bằng khoảng trắng trước rồi mới giải mã. Ngược lại, khi cần đặt một dấu cộng thật trong giá trị tham số, phải mã hóa nó thành phần trăm hai B, nếu không phía nhận sẽ đọc thành khoảng trắng.

Tên miền có dấu không dùng mã phần trăm mà dùng punycode

Một hiểu nhầm phổ biến là mã hóa phần trăm áp dụng được cho toàn bộ địa chỉ. Thực tế nó chỉ dùng cho phần đường dẫn, phần truy vấn và phần neo. Tên miền chứa ký tự ngoài bảng chữ cái không dấu phải được chuyển bằng một cơ chế riêng gọi là punycode, kết quả là một chuỗi bắt đầu bằng bốn ký tự x n hai gạch ngang rồi tới phần đã mã hóa. Trình duyệt hiện đại tự làm việc này khi bạn gõ tên miền tiếng Việt vào thanh địa chỉ và vẫn hiển thị lại dạng có dấu cho dễ đọc, nhưng khi bạn viết mã hoặc cấu hình máy chủ thì phải dùng đúng dạng punycode. Công cụ này không chuyển đổi punycode, nên nếu bạn dán một địa chỉ có tên miền tiếng Việt rồi bấm mã hóa toàn địa chỉ, phần tên miền sẽ bị đổi thành mã phần trăm và địa chỉ đó không dùng được. Cách xử lý đúng là tách riêng: chuyển tên miền sang punycode bằng công cụ chuyên trách, còn phần đường dẫn phía sau mới đưa vào đây.

Mã hóa hai lần và cách nhận ra

Lỗi mã hóa hai lần xảy ra khi một chuỗi đã được mã hóa lại đi qua hàm mã hóa thêm lần nữa, thường vì cả mã phía trình duyệt lẫn thư viện gọi giao thức đều tự động làm việc đó. Dấu hiệu nhận biết rất đặc trưng: chuỗi đầy những cụm phần trăm hai năm, và khoảng trắng biến thành phần trăm hai năm hai không thay vì phần trăm hai không. Khi gặp chuỗi như vậy, bạn cần bấm giải mã hai lần mới ra nội dung gốc. Trong công cụ này việc đó dễ làm vì kết quả sau lần giải mã thứ nhất có thể sao chép rồi dán ngược lại vào ô nhập. Ở phía ngược lại, hậu quả thực tế của mã hóa hai lần là tham số theo dõi chiến dịch bị sai, đường dẫn chuyển hướng trả về lỗi không tìm thấy, và các báo cáo phân tích lưu lượng gom nhầm một trang thành nhiều trang khác nhau. Cách phòng là xác định rõ một chỗ duy nhất trong luồng dữ liệu chịu trách nhiệm mã hóa, thường là ngay tại nơi ghép chuỗi truy vấn, còn các tầng khác chỉ truyền nguyên giá trị.

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

Khi nào dùng mã hóa thành phần, khi nào dùng mã hóa toàn địa chỉ?

Dùng mã hóa thành phần cho từng mảnh giá trị sắp được ghép vào chuỗi truy vấn, ví dụ từ khóa tìm kiếm hay địa chỉ đích của lệnh chuyển hướng. Dùng mã hóa toàn địa chỉ khi bạn đã có sẵn một đường dẫn hoàn chỉnh và chỉ muốn dọn khoảng trắng cùng chữ có dấu mà vẫn giữ nguyên dấu hai chấm, dấu gạch chéo và dấu hỏi.

Vì sao chữ tiếng Việt mã hóa xong lại dài như vậy?

Vì mỗi ký tự tiếng Việt có dấu chiếm ba byte khi mã hóa theo UTF-8, và mỗi byte được viết thành ba ký tự gồm dấu phần trăm cùng hai chữ số hệ mười sáu. Vậy một chữ có dấu nở thành chín ký tự. Một tiêu đề bài viết tiếng Việt trong đường dẫn có thể dài gấp năm lần bản gốc, đó là lý do nhiều trang chọn dùng đường dẫn không dấu.

Giải mã xong vẫn thấy nhiều dấu phần trăm là sao?

Đó là dấu hiệu chuỗi đã bị mã hóa hai lần, thường do cả mã phía trình duyệt lẫn thư viện gọi giao thức cùng tự động mã hóa. Bạn sao chép kết quả rồi dán ngược lại vào ô nhập và bấm giải mã thêm một lần nữa sẽ ra nội dung thật. Về lâu dài nên sửa mã nguồn để chỉ có đúng một chỗ chịu trách nhiệm mã hóa.

Vì sao dấu cộng trong chuỗi không đổi thành khoảng trắng khi giải mã?

Vì hàm giải mã chuẩn chỉ hiểu khoảng trắng ở dạng phần trăm hai không. Quy ước đổi khoảng trắng thành dấu cộng thuộc về kiểu mã hóa biểu mẫu cũ của HTML chứ không thuộc chuẩn chung cho địa chỉ. Nếu chuỗi của bạn đến từ một biểu mẫu, hãy thay thủ công dấu cộng thành khoảng trắng trước khi bấm giải mã.

Có bắt buộc mã hóa dấu và trong giá trị tham số không?

Bắt buộc. Dấu và là ký tự ngăn cách giữa các tham số, nên một dấu và chưa mã hóa nằm trong giá trị sẽ khiến phía nhận cắt tham số của bạn làm hai và mất phần phía sau. Hãy dùng nút mã hóa thành phần cho riêng giá trị đó, dấu và sẽ trở thành phần trăm hai sáu và giữ nguyên vẹn khi truyền đi.

Công cụ có mã hóa được tên miền tiếng Việt không?

Không đúng cách. Tên miền có dấu phải chuyển bằng punycode, cho ra chuỗi bắt đầu bằng x n rồi hai gạch ngang, chứ không dùng mã phần trăm. Nếu bạn dán cả địa chỉ có tên miền tiếng Việt vào đây, phần tên miền sẽ bị mã hóa sai và không truy cập được. Hãy chỉ đưa phần đường dẫn và tham số vào công cụ này.

Vì sao bấm giải mã lại báo lỗi?

Vì chuỗi đầu vào có một cụm phần trăm không hợp lệ, chẳng hạn dấu phần trăm đứng một mình, chỉ có một chữ số phía sau, hoặc chuỗi byte không tạo thành ký tự UTF-8 hợp lệ. Hàm giải mã chuẩn sẽ ném lỗi trong trường hợp này thay vì đoán bừa. Hãy kiểm tra lại chỗ có dấu phần trăm và bổ sung đủ hai chữ số hệ mười sáu.

Dấu thăng trong đường dẫn có cần mã hóa không?

Có, nếu nó là một phần của giá trị chứ không phải để mở phần neo. Dấu thăng chưa mã hóa báo cho trình duyệt biết mọi thứ phía sau là phần neo và không được gửi lên máy chủ, nên giá trị của bạn sẽ mất sạch. Mã hóa thành phần sẽ đổi nó thành phần trăm hai ba và giữ được nội dung.

Địa chỉ dài tối đa bao nhiêu ký tự thì an toàn?

Chuẩn không đặt giới hạn cứng nhưng thực tế thì có. Một số trình duyệt và máy chủ cũ cắt ở khoảng hai nghìn ký tự, còn nhiều máy chủ giới hạn tổng độ dài dòng yêu cầu ở vài kilobyte. Vì mã hóa tiếng Việt làm chuỗi phình lên rất nhanh, nên với dữ liệu dài bạn nên chuyển sang gửi bằng thân yêu cầu thay vì nhét hết vào chuỗi truy vấn.

Mã hóa URL có phải là một cách bảo mật không?

Không. Đây chỉ là phép biểu diễn lại ký tự để đường dẫn hợp lệ về cú pháp, ai cũng giải mã ngược được trong một giây. Đừng dùng nó để che giấu mã thẻ, mật khẩu hay bất kỳ thông tin nhạy cảm nào. Muốn bảo vệ dữ liệu thì phải mã hóa thật bằng khóa và truyền qua kết nối có chứng chỉ.

Chuỗi tôi dán vào đây có bị lưu lại không?

Không. Công cụ gọi thẳng các hàm mã hóa sẵn có của JavaScript ngay trong trình duyệt, không có bước gửi dữ liệu lên máy chủ. Dù vậy vẫn nên tránh dán những đường dẫn chứa mã phiên đăng nhập hay khóa truy cập vào bất kỳ trang web nào, vì thói quen đó dễ dẫn tới sơ suất ở chỗ khác.

Tham số theo dõi chiến dịch có cần mã hóa không?

Có, đặc biệt với các giá trị chứa khoảng trắng hoặc tiếng Việt như tên chiến dịch. Nếu để nguyên khoảng trắng, một số nền tảng sẽ cắt đường dẫn ngay tại đó và bạn mất phần tham số phía sau. Hãy mã hóa từng giá trị bằng nút mã hóa thành phần rồi mới ghép vào chuỗi truy vấn, đừng mã hóa cả cụm sau dấu hỏi.

Từ khóa liên quan

  • mã hóa url online
  • url encoder decoder
  • giải mã url
  • encode url tiếng việt
  • percent encoding là gì
  • encodeuricomponent
  • encodeuri khác encodeuricomponent
  • chuyển khoảng trắng thành %20
  • decode url online
  • mã hóa tham số truy vấn
  • url bị lỗi ký tự đặc biệt
  • mã hóa hai lần url
  • punycode tên miền tiếng việt
  • utm parameter có dấu
  • chuỗi truy vấn là gì
  • mã hóa dấu và trong url
  • url encoding utf-8
  • công cụ encode url miễn phí
  • sửa lỗi redirect url
  • định dạng url chuẩn rfc 3986

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook