Meneruskan nama file ke browser firefox menyebabkannya mengganti spasi dengan, %2520
bukan %20
.
Saya memiliki HTML berikut dalam sebuah file bernama myhtml.html
:
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
Saat saya memuat myhtml.html
ke firefox, gambar muncul sebagai gambar rusak. Jadi saya klik kanan tautan untuk melihat gambar dan itu menunjukkan URL yang dimodifikasi ini:
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
^
^-----Firefox changed my space to %2520.
Apa apaan? Ini mengubah ruang saya menjadi %2520
. Bukankah seharusnya itu mengubahnya menjadi %20
?
Bagaimana cara mengubah file HTML ini agar browser dapat menemukan gambar saya? Apa yang terjadi di sini?
sumber
http://mysite/test & that... If I use
UrlEncode` yang berubah menjadihttp://mysite/test%20&%20that
tetapi saya juga ingin&
mengubahnya ke% 26 juga jadi itu adalah situs saya / tes% 20% 26% 20that `Bagaimana saya bisa melakukannya?Untuk beberapa alasan - mungkin valid - url dikodekan dua kali.
%25
adalah%
tanda kode url . Jadi url aslinya terlihat seperti:Kemudian itu mendapat urlencode sekali:
dan dua kali:
Jadi, Anda tidak boleh melakukan urlencoding - dalam kasus Anda - karena komponen lain sepertinya sudah melakukannya untuk Anda. Gunakan spasi
sumber
Ketika Anda mencoba mengunjungi nama file lokal melalui browser firefox, Anda harus memaksa
file:\\\
protokol ( http://en.wikipedia.org/wiki/File_URI_scheme ) atau firefox akan menyandikan ruang Anda DUA KALI. Ubah cuplikan html dari ini:untuk ini:
atau ini:
Kemudian firefox diberi tahu bahwa ini adalah nama file lokal, dan ini membuat gambar dengan benar di browser, dengan benar mengkodekan string sekali.
Tautan yang berguna : http://support.mozilla.org/en-US/questions/900466
sumber
Potongan kode berikut menyelesaikan masalah saya. Pikir ini mungkin berguna untuk orang lain.
Alih-alih menggunakan default,
encodeURIComponent
baris pertama kode saya mengubah semuaspaces
menjadihyphens
menggunakan pola regex/\s\g
dan baris berikut hanya melakukan kebalikannya, yaitu mengubah semuahyphens
kembalispaces
menggunakan yang lainregex pattern /-/g
. Di sini/g
sebenarnya bertanggung jawab untukfinding all
mencocokkan karakter.Saat saya mengirimkan nilai ini ke panggilan Ajax saya, nilai ini akan dilintasi sebagai
normal spaces
atau hanya%20
dan dengan demikian akan dihapusdouble-encoding
.sumber
Coba ini?
encodeURIComponent('space word').replace(/%20/g,'+')
sumber