Ngôn ngữ: Tiếng Việt

tools / url

url/

Mã hóa / giải mã URL, đồng thời tách URL đầy đủ thành các phần và bảng tham số truy vấn.

Văn bản gốc

Kết quả mã hóa

Phân tích URL

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

encodeURIComponent và encodeURI khác nhau thế nào, nên chọn cái nào

Dùng encodeURIComponent để mã hóa giá trị tham số hoặc một đoạn của đường dẫn, dùng encodeURI để mã hóa cả địa chỉ URL. Cái trước cũng đổi những ký tự có ý nghĩa đặc biệt như : / ? & = # thành %XX, nên chỉ dùng cho một đoạn riêng; cái sau giữ nguyên các ký tự này nên cấu trúc URL không bị phá, nhưng không xử lý dấu & và = nằm trong giá trị tham số. Chữ cái, chữ số và - _ . ! ~ * ' ( ) thì cả hai đều không mã hóa.

Vì sao dấu cách thành %20, khi giải mã dấu + có thành dấu cách không

Mã hóa ở đây viết dấu cách thành %20 chứ không phải +. Khi giải mã, dấu + trong ô sẽ được giữ nguyên, không thành dấu cách, vì decodeURIComponent không thực hiện phép chuyển đó; chỉ bảng tham số truy vấn bên dưới "Phân tích URL" mới coi + là dấu cách theo quy tắc của biểu mẫu. Muốn giải mã chuỗi như a+b sinh ra từ biểu mẫu gửi lên, hãy tự đổi + thành dấu cách trước rồi mới giải mã.

Giải mã báo "không phải chuỗi UTF-8 hợp lệ" thì phải làm sao

Chuỗi %XX này không phải mã hóa UTF-8. Trường hợp hay gặp nhất là văn bản tiếng Trung mã hóa bằng GBK ở các website cũ, ví dụ %D6%D0; công cụ này giống decodeURIComponent của trình duyệt, chỉ nhận UTF-8, nên sẽ báo lỗi và chỉ ra vị trí xảy ra lỗi. Nội dung GBK có thể chuyển đổi bằng công cụ hỗ trợ GBK, ví dụ unquote(s, encoding='gbk') của Python. Nếu văn bản bị cắt cụt khi sao chép, ví dụ %E4%B8 thiếu byte cuối, cũng sẽ báo lỗi này.

Giải mã báo "dấu % không được theo sau bởi hai chữ số hex" thì phải làm sao

Trong văn bản có một dấu phần trăm chưa được mã hóa, ví dụ 100% hoặc 50%off. Dấu phần trăm là điểm bắt đầu của chuỗi escape trong mã hóa URL, theo sau bắt buộc phải có hai chữ số thập lục phân. Hãy đổi % đó thành %25 rồi giải mã lại; thông báo sẽ cho biết đó là ký tự thứ mấy.

Giải mã xong vẫn còn một đống %XX thì phải làm sao

Nhiều khả năng đã bị mã hóa hai lần, ví dụ %2520 giải mã một lần ra %20. Chỉ cần giải mã thêm một lần: bấm "⇄ Dùng kết quả làm đầu vào" để đưa kết quả trở lại ô nhập, rồi bấm "Giải mã" lần nữa.

Có giống kết quả mã hóa URL của PHP, Python, Java không

Về cơ bản là giống, chi tiết có khác biệt. encodeURIComponent gần với rawurlencode của PHP và urllib.parse.quote(s, safe='') của Python, khác ở chỗ nó không mã hóa ! ' ( ) *. URLEncoder của Java và urlencode của PHP viết dấu cách thành +, còn ở đây là %20. Khi kết nối với hệ thống khác, hãy theo quy tắc giải mã thực tế của bên nhận.

"Phân tích URL" báo thiếu giao thức, hoặc kết quả khác với những gì tôi nhập

Phân tích cần một URL đầy đủ, bắt đầu bằng giao thức như https://; chỉ viết tên miền hoặc đường dẫn thì sẽ báo lỗi. Kết quả đến từ bộ phân tích URL có sẵn của trình duyệt nên đã được chuẩn hóa: tên miền được đổi thành chữ thường, khi không ghi cổng hoặc ghi cổng mặc định thì hiển thị "(cổng mặc định)", ký tự không phải ASCII trong đường dẫn (như chữ có dấu) hiển thị thành %XX kèm thêm một dòng đường dẫn đã giải mã. Khóa và giá trị trong bảng tham số truy vấn đã được giải mã sẵn.

URL tôi nhập có bị gửi lên máy chủ không

Không. Mã hóa, giải mã và phân tích đều chạy trong trình duyệt, các tham số như token, số điện thoại trong URL cũng không rời khỏi trình duyệt của bạn.