Ich codiere eine Zeichenfolge, die in einer URL (über GET) übergeben wird. Aber wenn ich verwende escape
, encodeURI
oder encodeURIComponent
, &
mit ersetzt werden %26amp%3B
, aber ich will es mit ausgetauscht werden %26
. Was mache ich falsch?
javascript
urlencode
dododedodonl
quelle
quelle
&
ist der richtige Weg, um dem kaufmännischen Und in einem HTML-Kontext zu entkommen ... woher kommt Ihre Quelle? und was ist das Ziel? Es kann beispielsweise besser sein, dies serverseitig durchzuführen.Antworten:
Ohne Ihren Code zu sehen, ist es schwierig, etwas anderes als einen Stich in die Dunkelheit zu beantworten. Ich würde vermuten, dass die Zeichenfolge, die Sie an encodeURIComponent () übergeben , was die richtige Methode ist, aus dem Ergebnis des Zugriffs auf die innerHTML- Eigenschaft stammt. Die Lösung besteht darin, stattdessen den Eigenschaftswert innerText / textContent abzurufen :
Ist dies nicht der Fall, können Sie die HTML-Entität mit der replace () -Methode ersetzen:
quelle
Wenn Sie dies buchstäblich getan haben:
Dann ist das Ergebnis
%26
, Sie können es hier testen . Stellen Sie sicher, dass die Zeichenfolge, die Sie codieren, gerecht ist&
und nicht&
von Anfang an ... andernfalls wird sie korrekt codiert, was wahrscheinlich der Fall ist. Wenn Sie aus irgendeinem Grund ein anderes Ergebnis benötigen, können Sie dies.replace(/&/g,'&')
vor der Codierung tun .quelle
Es gibt HTML- und URI-Codierungen.
&
wird&
in HTML codiert, während%26
es sich&
um eine URI-Codierung handelt .Bevor Sie Ihre Zeichenfolge mit einem URI codieren, möchten Sie möglicherweise eine HTML-Decodierung und anschließend eine URI-Codierung durchführen :)
Ergebnis
%26AndOtherHTMLEncodedStuff
Hoffe das spart dir etwas Zeit
quelle