Koduję ciąg znaków, który zostanie przekazany w adresie URL (przez GET). Ale jeśli użyję escape
, encodeURI
lub encodeURIComponent
, &
zostanie zastąpione %26amp%3B
, ale chcę, aby zostało zastąpione %26
. Co ja robię źle?
javascript
urlencode
dododedodonl
źródło
źródło
&
jest właściwym sposobem na ucieczkę ze znaku handlowego i w kontekście HTML ... skąd pochodzi twoje źródło? a jaki jest cel podróży Może być lepiej zrobić to na przykład po stronie serwera.Odpowiedzi:
Bez obejrzenia kodu trudno jest odpowiedzieć inaczej niż dźgnięcie w ciemność. Sądzę, że ciąg przekazywany do metody encodeURIComponent () , która jest poprawną metodą do użycia, pochodzi z dostępu do właściwości innerHTML . Rozwiązaniem jest zamiast tego uzyskać wartość właściwości innerText / textContent :
Jeśli tak nie jest, możesz użyć metody replace () , aby zastąpić encję HTML:
źródło
Jeśli zrobiłeś to dosłownie:
Następnie wynik jest
%26
, można go przetestować tutaj . Upewnij się, że łańcuch, który kodujesz, jest po prostu&
i nie&
zaczynaj od ... w przeciwnym razie koduje się poprawnie, co jest prawdopodobne. Jeśli z jakiegoś powodu potrzebujesz innego wyniku, możesz zrobić to.replace(/&/g,'&')
przed kodowaniem.źródło
Istnieje kodowanie HTML i URI.
&
jest&
zakodowany w HTML, podczas gdy%26
jest&
w kodowaniu URI .Tak więc przed kodowaniem URI swojego ciągu możesz dekodować HTML, a następnie kodować URI :)
wynik
%26AndOtherHTMLEncodedStuff
Mam nadzieję, że to pozwoli Ci zaoszczędzić trochę czasu
źródło