Pada tahun 2010, apakah Anda akan menyajikan URL yang berisi karakter UTF-8 di portal web besar?
Karakter unicode dilarang sesuai RFC di URL (lihat di sini ). Mereka harus persen dikodekan agar sesuai dengan standar.
Poin utama saya, bagaimanapun, adalah melayani karakter yang tidak dikodekan hanya untuk tujuan memiliki URL yang terlihat bagus, jadi encoding persen keluar.
Semua browser utama tampaknya mengurai URL tersebut dengan baik, apa pun yang dikatakan RFC. Kesan umum saya, bagaimanapun, adalah bahwa hal itu menjadi sangat goyah ketika meninggalkan domain browser web:
- URL mendapatkan copy + paste ke file teks, E-Mail, bahkan situs Web dengan pengkodean yang berbeda
- Perpustakaan Klien HTTP
- Browser eksotis, pembaca RSS
Apakah kesan saya benar bahwa masalah diharapkan terjadi di sini, dan karena itu (belum) solusi praktis jika Anda melayani audiens non-teknis dan penting agar semua link Anda berfungsi dengan baik meskipun dikutip dan diteruskan?
Apakah ada cara ajaib untuk menyajikan URL yang terlihat bagus dalam HTML
http://www.example.com/düsseldorf?neighbourhood=Lörick
yang dapat disalin + ditempel dengan karakter khusus yang utuh, tetapi berfungsi dengan benar saat digunakan kembali di klien lama?
Jawaban:
Gunakan encoding persen. Browser modern akan menangani masalah tampilan & tempel dan membuatnya dapat dibaca manusia. E. g. http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Sunting: ketika Anda menyalin url seperti itu di Firefox, papan klip akan menyimpan formulir yang dikodekan persen (yang biasanya merupakan hal yang baik), tetapi jika Anda menyalin hanya sebagian saja, itu akan tetap tidak dikodekan.
sumber
GET /images/logo.png HTTP/1.1
? Apakah mereka selalu persen-encode URL?Apa kata Tgr. Latar Belakang:
http://www.example.com/düsseldorf?neighbourhood=Lörick
Itu bukan URI. Tapi itu adalah sebuah IRI .
Anda tidak dapat menyertakan IRI dalam dokumen HTML4; jenis atribut seperti
href
didefinisikan sebagai URI dan bukan IRI. Beberapa browser akan menangani IRI di sini, tetapi itu bukan ide yang bagus.Untuk mengenkode IRI menjadi URI, ambil bagian jalur dan kueri, UTF-8-encode mereka lalu persen-encode byte non-ASCII:
http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick
Jika ada karakter non-ASCII di bagian nama host IRI, mis.
http://例え.テスト/
, mereka telah dikodekan menggunakan Punycode sebagai gantinya.Sekarang Anda memiliki URI. Itu URI yang jelek. Tetapi sebagian besar browser akan menyembunyikannya untuk Anda: salin dan tempel ke bilah alamat atau ikuti di tautan dan Anda akan melihatnya ditampilkan dengan karakter Unicode asli. Wikipedia telah menggunakan ini selama bertahun-tahun, misalnya:
http://en.wikipedia.org/wiki/ɸ
Satu-satunya browser yang perilakunya tidak dapat diprediksi dan tidak selalu menampilkan versi IRI yang cantik adalah ...
...ya kamu tahu lah.
sumber
Bergantung pada skema URL Anda, Anda dapat membuat bagian yang dikodekan UTF-8 "tidak penting". Misalnya, jika Anda melihat URL Stack Overflow, mereka memiliki bentuk berikut:
Namun, server tidak benar-benar peduli jika Anda salah mendapatkan bagian setelah pengenal, jadi ini juga berfungsi:
Jadi jika Anda memiliki tata letak seperti ini, maka Anda berpotensi menggunakan UTF-8 di bagian setelah pengenal dan tidak masalah jika itu kacau. Tentu saja ini mungkin hanya berfungsi dalam keadaan yang agak khusus ...
sumber
Karena semua komentar ini benar, Anda harus mencatat bahwa sejauh ICANN menyetujui karakter Arab (Persia) dan Cina untuk didaftarkan sebagai Nama Domain, semua perusahaan pembuat browser (Microsoft, Mozilla, Apple, dll.) Harus mendukung Unicode di URL tanpa pengkodean apa pun, dan itu harus dapat dicari oleh Google, dll.
Jadi masalah ini akan diselesaikan secepatnya.
sumber
Tidak yakin apakah itu ide yang bagus, tetapi seperti yang disebutkan di komentar lain dan seperti yang saya tafsirkan, banyak karakter Unicode yang valid di URL HTML5 .
Misalnya,
href
dokumen mengatakan http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :Kemudian definisi "URL yang valid" mengarah ke http://url.spec.whatwg.org/ , yang mendefinisikan poin kode URL sebagai:
Istilah "titik kode URL" kemudian digunakan di beberapa bagian algoritme penguraian, misalnya untuk status jalur relatif :
Juga validator http://validator.w3.org/ memberikan akses untuk URL seperti
"你好"
, dan tidak memberikan URL dengan karakter seperti spasi"a b"
Terkait: Karakter mana yang membuat URL tidak valid?
sumber
"你好"
dan"a b"
) harus dienkode persen saat membuat permintaan HTTP kan?"a b"
Saya cukup yakin ya karena spasi tidak ada dalam daftar yang diizinkan di atas. Karena"你好"
, jelas merupakan ide yang lebih baik untuk persen encode, tapi saya tidak tahu apakah itu hanya pertanyaan tentang "implementasi tidak cukup baik" atau "standar mengatakan demikian". Standar HTML tampaknya mengizinkan karakter tersebut. Tapi saya pikir ini ditentukan oleh standar HTTP, bukan HTML. Lihat juga: stackoverflow.com/questions/912811/…Gunakan formulir berenkode persen . Beberapa komputer (terutama lama) yang menjalankan Windows XP misalnya tidak mendukung Unicode, melainkan pengkodean ISO. Itulah alasan mengapa URL berenkode persen ditemukan. Selain itu, jika Anda memberikan URL yang dicetak di atas kertas kepada pengguna, berisi karakter yang tidak dapat diketik dengan mudah, pengguna tersebut mungkin akan kesulitan mengetiknya (atau mengabaikannya). Bentuk persen-encoded bahkan dapat digunakan di banyak mesin tertua yang pernah ada (meskipun mereka tidak mendukung internet tentunya).
Namun ada sisi negatifnya, karena karakter yang dikodekan persen lebih panjang dari yang asli, sehingga mungkin menghasilkan URL yang sangat panjang. Tapi coba abaikan saja, atau gunakan penyingkat URL (saya akan merekomendasikan goo.gl dalam hal ini, yang membuat URL panjang 13 karakter). Juga, jika Anda tidak ingin mendaftar untuk akun Google, coba bit.ly (bit.ly membuat URL yang sedikit lebih panjang, dengan panjang 14 karakter).
sumber
Bagi saya ini adalah cara yang benar, Ini baru saja berhasil:
$linker = rawurldecode("$link"); <a href="<?php echo $link;?>" target="_blank"><?php echo $linker ;?></a>
Ini berfungsi, dan sekarang tautan ditampilkan dengan benar:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام
Tautan ditemukan di:
http://www.galeriejaninerubeiz.com/newsite/news
sumber