---
title: "URL encode javascript"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/179419-url-encode-javascript"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Mattias Nordin"
published: "2009-07-16T09:32:43.000Z"
updated: "2009-07-16T13:41:49.000Z"
replies: 9
views: 1273
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/179419-url-encode-javascript"
---

# URL encode javascript

## #1 — Mattias Nordin, 2009-07-16T09:32Z

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&#37197;&#20449;&#24076;&#26395;

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

Permalänk: https://www.webforum.nu/p/179419

## #2 — nitro2k01, 2009-07-16T11:49Z

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.

Permalänk: https://www.webforum.nu/p/2193152

## #3 — Mattias Nordin, 2009-07-16T11:51Z

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);
}
```

Permalänk: https://www.webforum.nu/p/2193153

## #4 — Mattias Nordin, 2009-07-16T11:52Z

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.

Permalänk: https://www.webforum.nu/p/2193154

## #5 — Mattias Nordin, 2009-07-16T12:20Z

Öppnar tråden igen... 

Mysko. Det fungerar med e-newsletter&#37197;&#20449;&#24076;&#26395; men inte med e-newsletterÅÄÖ.

ÅÄÖ skippas helt av IE8. Hmmm

Permalänk: https://www.webforum.nu/p/2193157

## #6 — nitro2k01, 2009-07-16T12:24Z

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.

Permalänk: https://www.webforum.nu/p/2193159

## #7 — Mattias Nordin, 2009-07-16T12:51Z

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 :)

Permalänk: https://www.webforum.nu/p/2193162

## #8 — Mattias Nordin, 2009-07-16T12:59Z

<http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp>

Permalänk: https://www.webforum.nu/p/2193165

## #9 — nitro2k01, 2009-07-16T13:36Z

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...

Permalänk: https://www.webforum.nu/p/2193180

## #10 — Mattias Nordin, 2009-07-16T13:41Z

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.

Permalänk: https://www.webforum.nu/p/2193181

---

Tråden på webben: https://www.webforum.nu/amne/javascript/179419-url-encode-javascript
