Saya menyandikan string yang akan dikirimkan dalam URL (via GET). Tetapi jika saya menggunakan escape
, encodeURI
atau encodeURIComponent
, &
akan diganti dengan %26amp%3B
, tetapi saya ingin itu diganti dengan %26
. Apa yang saya lakukan salah?
javascript
urlencode
dododedodonl
sumber
sumber
&
adalah cara yang tepat untuk menghindari ampersand dalam konteks HTML ... dari mana sumber Anda berasal? dan apa tujuannya? Mungkin lebih baik untuk melakukan sisi server ini misalnya.Jawaban:
Tanpa melihat kode Anda, sulit untuk menjawab selain tikaman dalam gelap. Saya kira string yang Anda lewati ke encodeURIComponent () , yang merupakan metode yang tepat untuk digunakan, berasal dari hasil mengakses properti innerHTML . Solusinya adalah mendapatkan nilai properti innerText / textContent sebagai gantinya:
Jika bukan itu masalahnya, Anda dapat menggunakan metode replace () untuk mengganti entitas HTML:
sumber
Jika Anda benar-benar melakukan ini:
Maka hasilnya adalah
%26
, Anda bisa mengujinya di sini . Pastikan string yang Anda encode itu adil&
dan tidak&
dimulai dengan ... jika tidak, encoding dengan benar, yang mungkin terjadi. Jika Anda memerlukan hasil yang berbeda untuk beberapa alasan, Anda dapat melakukan.replace(/&/g,'&')
sebelum penyandian.sumber
Ada penyandian HTML dan URI.
&
adalah&
dikodekan dalam HTML sementara%26
adalah&
di URI encoding .Jadi sebelum URI menyandikan string Anda, Anda mungkin ingin mendekode HTML dan kemudian URI menyandikannya :)
hasil
%26AndOtherHTMLEncodedStuff
Semoga ini menghemat waktu Anda
sumber