webForumDet fria alternativet

URL skapar konstiga tecken

.NET

8 svar · 698 visningar · startad av hopparn

Medlem sedan nov. 20011 551 inlägg
Frågan#1

hej
jag skapar en URL programmatiskt (c#) och skickar sedan besökaren vidare mha response.redirect(sURL) typ sådär.

Vid debugging ser jag att bokstaven Ö i urlen verkligen är ett Ö (å är å och ä är ä etc)

Då jag vidarebefodrats har dessa tecken bytts ut mot skräp, ö blir t ex: %c3%96 och presenteras då på sidan i html som ett fult Ä med bindestreck efter...

Jag har provat med server.urlencode utan resultat, meta taggen anger iso 8859-1 och allt skall vara frid och fröjd men inget fungerar.

Hjälp!

mvh
Patrick

//ett ungefärligt exempel!
sCustomerInfo ="ÖöÄäÅå"
sDebitechstring = "https://secure.incab.se/etcetera?sCustomerInfo;
Response.Redirect(sDebitechstring);
Medlem sedan dec. 19996 721 inlägg
#2

hopparn skrev:

Vid debugging ser jag att bokstaven Ö i urlen verkligen är ett Ö (å är å och ä är ä etc)

Det ska de inte vara. De måste URL-encodas.

hopparn skrev:

Då jag vidarebefodrats har dessa tecken bytts ut mot skräp, ö blir t ex: %c3%96

Inte skräp, URL-encodat. Dock i fel encoding, om det är iso-8859-1 du kör med.

UrlEncode(strängen,Encoding.GetEncoding("iso-8859-1"));

Medlem sedan nov. 20011 551 inlägg
#3

Jag uttryckte mig lite slarvigt, visst vill jag encoda dem så att de kan tolkas på webben på nästa sida :)

server.urlencode(sträng, Encoding.GetEncoding("ISO 8859-1") funkar tyvärr inte, jag får felmeddelande: The best overloaded method match for 'System.Web.HttpServerUtility.UrlEncode(string, System.IO.TextWriter)' has some invalid arguments vilket jag inte kan förstå... ser du något inte jag ser?

mvh
Patrick

Medlem sedan dec. 19996 721 inlägg
#4

Använd HttpUtility.UrlEncode

Medlem sedan nov. 20011 551 inlägg
#5

Ger inget fel, borde tänkt på att det inte var server :)
Däremot får jag inte skriva "ISO 8859-1" men man kan ju använda codepagen som är 28531 eller nåt. Tyvärr ger det inget resultat, det är fortfarande samma

mvh
Patrick

Medlem sedan dec. 19996 721 inlägg
#6

Det heter "iso-8859-1" inte "ISO 8859-1", vilket även gäller i META.

Medlem sedan nov. 20011 551 inlägg
#7

My bad, jag jobbar ju på SIS och alla iso standarder är ju döpta med versaler så jag missade det :)

HttpUtility.UrlEncode(sCustomerInfo,Encoding.GetEncoding("iso-8859-1"));
ger fortfarande ingen skillnad, åäö i sCustomerinfo blir %c3%96 och tolkas som ett skumt ä med bindestreck... *suck*

Medlem sedan dec. 19996 721 inlägg
#8

GetEncoding(1252) dårå....

Medlem sedan nov. 20011 551 inlägg
#9

JAG LÖSTE DET
det gick inte att lägga på hela den strängen, jag fick göra det på varje enskid variabel i ett tidigare skede men då gick det galant

tack för hjälpen :):)

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)