webForumDet fria alternativet

URL encode javascript

9 svar · 1 268 visningar · startad av Mattias Nordin

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#1

Jag har byggt ett litet verktyg som bygger en krånglig URL sträng som används vid marknadsföringskampanjer. Jag har dock fått ett oväntat problem när japaner började använda verktyget.

Följande url sträng ... d=22456&rCC=2psM&rLang=JP&rHide=2367&rProd=!e-newsletter配信希望

Ger "e-newsletter????" på sidan. De japanska tecknen ersätts med frågetecken.

Jag känner till ASP urlEncode och det hade löst problemet men jag vill undvika att posta om sidan. Byggandet av URL strängen byggs dynamiskt med javascript beroende på val i checkboxar.

Finns det någon färdig javascript funktion för att lösa problemet med japanska tecken i en URL?

:q

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Prova att experimentera med escape och encodeURIComponent i Javascript. De formaterar båda utökade tecken på olika sätt, och jag vet inte vilken av de som funkar bäst med ASP.

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#3

Tack för ditt svar.

Jag har experimerat vidare och följande funktion verkar fungera. Har inte testat alla varianter ännu men japanska tecken fungerar bra i IE8.

<SCRIPT LANGUAGE="JavaScript"> 

// JAVSCRIPT URL ENCODE... 
function encode(str) {
	var result = "";
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	 return escape(result);
}

function decode(str) {
//	var result = "";
  	var result = str.replace(/\+/g, " ");
/*	
	for (i = 0; i< str.length; i++) {
		if (str.charAt(i) == "+") result += " ";
		else result += str.charAt(i);
	}
*/
	return unescape(result);
}
Mattias NordinMedlem sedan dec. 20051 056 inlägg
#4

Vid snabbsvar så går det inte att markera sin egen post som "acceptera som slutgiltigt svar". Har en känsla över att det går efter denna post dock...

NOPE...

Sidan måste tydligen laddas om manuellt för att slutgiltigt svar länken ska visas.

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#5

Öppnar tråden igen...

Mysko. Det fungerar med e-newsletter配信希望 men inte med e-newsletterÅÄÖ.

ÅÄÖ skippas helt av IE8. Hmmm

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Prövade du med encodeURIComponent som jag föreslog? Och för övrigt, varför ersätter du mellanslag med +? escape ersätter det ju med %20 som bör funkar lika bra.

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#7

Hmmm... nä jag var insnöad på escape spåret.

encodeURIComponent fungerar ju onekligen bättre och vips fungerar även ÅÄÖ.

Anledningen till att jag labbade med att ersätta %20 var för att få ner längden på URLen. Gick nämligen i taket (2000 tecken någonting) och då fick jag för mig att trimma ner 33% av tecknen för mellanslag.

Nu käns det mer positivt igen :)

Mattias NordinMedlem sedan dec. 20051 056 inlägg
nitro2k01Medlem sedan aug. 20039 342 inlägg
#9

För övrigt, gör om gör rätt, är mitt råd. GET-satser bör du inte alls använda på ställen som ska lagra data. Använd ett formulär med method="POST" istället. Då kommer du både förbi längdgränsen och undviker andra eventuella problem, som att sidan inte laddas om och kunden tror att han har skickat in datat en andra gång fast han inte har det.
Om du ska skicka länkar i mail - lagra datat i en databas knutet till ett id och hämta ut vid behov. Sedan landar kunden på en sida med ett POST-formulär. Skicka hellre länkar i stil med
http://www.minsida.com/kundform.asp?id=12345
än
http://www.minsida.com/kundform.asp?namn=Johan&efternamn=svensson&adress=Gatugatan+1 osv...

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#10

Jag är ockås inne på att göra om göra rätt. Det här känns som en workaround.

Ska nog bygga en riktig web 2 lead funktion där det går att välja fält med någon sorts grafiskt interface men det är bara på tankestadiet just nu.

Den lösningen jag har nu har evolverat ur att man skickade med en språkkod till en landingpage där denna byter språk dynamiskt beroende på input. Det är bara en enda sida och inte något databasdrivet.

Tack för hjälpen. Lärde mig något nytt om javascript i alla fall.

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)