2009-08-14 25 views

Trả lời

10

Có vẻ như chỉ có 73 ký tự có thể được sử dụng không thoát trong URL. NẾU đó là trường hợp, bạn có thể chuyển đổi số 128-bit thành cơ số 73, và có một URL 21 ký tự.

NẾU bạn có thể tìm thấy 85 ký tự hợp pháp, bạn có thể truy cập URL 20 ký tự.

+0

Vì vậy, chúng tôi đang lưu 9 ký tự trên URL? Tôi tìm thấy nó thực sự dễ dàng hơn để đọc/đọc thuộc hệ thập lục phân hơn một cái gì đó như 00amyWGct0y_ze4lIsj2Mw – hometoast

+0

@hometoast: Vâng, tốt, đó dường như không phải là một hạn chế cho OP. ;) – retracile

+1

Tôi đã sử dụng mã hóa Ascii85 để viết một hướng dẫn cho cột cơ sở dữ liệu trong 20 ký tự ASCII. Tôi đã đăng mã C# trong trường hợp nó hữu ích. Bộ ký tự cụ thể có thể khác với mã hóa URL, nhưng bạn có thể chọn bất kỳ ký tự nào phù hợp với ứng dụng của bạn. Nó có sẵn ở đây: http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie

5

Một GUID trông giống như c9a646d3-9c61-4cb7-bfcd-ee2522c8f633 này - đó là 32 chữ số hex, mỗi mã hóa 4 bit, do đó 128 bit trong tổng

Một mã hóa base64 sử dụng 6 bit cho mỗi biểu tượng, đó là dễ dàng để đạt được với các ký tự an toàn của URL để cung cấp chuỗi ký tự 22 char. Như những người khác đã lưu ý, bạn có thể với 73 biểu tượng an toàn url và mã hóa như một số 73 cơ sở để cung cấp cho 21 ký tự.

+0

Làm cách nào bạn lấy được "6 bit trong số ký tự an toàn URL"? –

+0

Không có 127 ký tự an toàn URL, vì vậy giả sử 6 bit sẽ là số tối đa. –

+0

6 bit là base64, liên kết gốc đã đi tới. Nếu bạn có thể nhận được nhiều hơn 64 ký tự, ví dụ: 85, bạn có thể chuyển đổi số 128 bit thành cơ số 85 và nhận được tối đa 20 ký tự. Nó sẽ không được tốt đẹp như base64. – retracile

Các vấn đề liên quan