Beberapa karakter tidak dapat menjadi bagian dari URL (misalnya, spasi) dan beberapa
karakter lainnya memiliki arti khusus di dalam URL. Dalam formulir HTML, karakter =
digunakan untuk memisahkan nama dari nilai. Sintaksis umum URI menggunakan encoding URL
untuk menangani masalah ini, sementara formulir HTML membuat beberapa substitusi tambahan,
bukan menerapkan encoding persen untuk semua karakter tersebut.
Misalnya, spasi dalam string dienkode dengan %20
atau diganti dengan tanda plus (+
). Jika Anda menggunakan karakter pipa (|
) sebagai pemisah, pastikan pipa itu dienkode sebagai %7C
. Koma dalam string harus dienkode sebagai %2C
.
Sebaiknya gunakan library pembuatan URL normal platform untuk mengenkode URL secara otomatis, guna memastikan URL telah di-escape dengan benar untuk platform Anda.
Membuat URL yang valid
Anda mungkin menganggap URL yang "valid" sudah jelas, tetapi
kenyataannya tidak demikian. URL yang dimasukkan dalam kolom URL di
browser, misalnya, dapat berisi karakter khusus (misalnya
"上海+中國"
); browser harus menerjemahkan karakter tersebut secara internal
ke dalam encoding yang berbeda sebelum melakukan transmisi.
Dengan token yang sama, setiap kode yang menghasilkan atau menerima input UTF-8
bisa memperlakukan URL berisi karakter UTF-8 sebagai "valid", tetapi juga perlu
menerjemahkan karakter tersebut sebelum mengirimnya ke server web.
Proses ini disebut
encoding URL atau encoding persen.
Karakter khusus
Karakter khusus harus diterjemahkan karena semua URL harus sesuai dengan sintaksis yang ditentukan oleh spesifikasi Uniform Resource Identifier (URI). Akibatnya, ini berarti URL hanya boleh berisi sebagian karakter ASCII khusus: simbol alfanumerik yang sudah umum, dan beberapa karakter dengan fungsi khusus untuk digunakan sebagai karakter kontrol dalam URL. Tabel ini merangkum karakter tersebut:
Kumpulan | karakter | Penggunaan URL |
---|---|---|
Alfanumerik | a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 | String teks, penggunaan skema (http ), port (8080 ), dll. |
Tanpa fungsi khusus | - _ . ~ | String teks |
Dengan fungsi khusus | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Karakter kontrol dan/atau String Teks |
Saat membuat URL yang valid, Anda harus memastikan bahwa URL tersebut hanya berisi karakter yang ditampilkan dalam tabel Ringkasan Karakter URL yang Valid. Penyesuaian URL untuk menggunakan kumpulan karakter ini biasanya menyebabkan dua masalah, yaitu masalah penghilangan dan masalah penggantian:
- Karakter yang ingin Anda tangani tidak termasuk dalam
kumpulan karakter di atas. Misalnya, karakter dalam bahasa asing
seperti
上海+中國
harus dienkode menggunakan karakter di atas. Menurut aturan umum, spasi (yang tidak diizinkan dalam URL) sering kali juga dinyatakan menggunakan karakter plus'+'
. - Karakter termasuk dalam kumpulan karakter di atas sebagai karakter dengan fungsi khusus,
tetapi harus digunakan secara literal.
Misalnya,
?
digunakan dalam URL untuk menunjukkan awal dari string kueri; jika Anda ingin menggunakan string "? and the Mysterians", Anda harus mengenkode karakter'?'
.
Semua karakter yang akan dienkode ke URL dienkode
menggunakan karakter '%'
dan nilai heksadesimal dua karakter
yang sesuai dengan karakter UTF-8. Misalnya,
上海+中國
di UTF-8 akan dienkode ke URL sebagai
%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
. String
? and the Mysterians
akan dienkode ke URL sebagai
%3F+and+the+Mysterians
atau %3F%20and%20the%20Mysterians
.
Karakter umum yang memerlukan encoding
Beberapa karakter umum yang harus dienkode adalah:
Karakter tidak aman | Nilai yang dienkode |
---|---|
Spasi | %20 |
" | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
Mengonversi URL yang Anda terima dari input pengguna terkadang rumit. Misalnya, seorang pengguna dapat memasukkan alamat sebagai "5th&Main St." Biasanya, Anda harus membuat URL Anda dari bagian-bagiannya, memperlakukan setiap input pengguna sebagai karakter literal.
Selain itu, URL dibatasi hingga 8.192 karakter untuk semua layanan web Google Maps Platform dan Static Web API. Untuk sebagian besar layanan, batas karakter ini jarang tercapai. Namun, perhatikan bahwa layanan tertentu memiliki beberapa parameter yang bisa mengakibatkan URL menjadi panjang.