l-boyMedlem sedan juli 2003223 inlägg
Jag har en sträng som ser ut såhär:
string postData = "action=newArticle&articleNo=1&articleName=MinArtikel"
Strängen postas till en annan sida m.h.a följande:
WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] byteArray = Encoding.Default.GetBytes(postData);
byte[] responseArray = myWebClient.UploadData(postURL, "POST", byteArray);
Response.Write(Encoding.Default.GetString(responseArray));
Det funkar galant. Tills dess att postData innehåller t.ex "&"-tecken eller mellanslag. (Mellanslagen försvinner. Att &-tecknet vållar problem förstår jag också varför)
Fick tipset att URLEncode skulle lösa mina problem och la därför till
postData = HttpUtility.UrlEncode(postData);
Men det löste inget. Tips på vad som bör göras?
HermanMedlem sedan maj 2001427 inlägg
Kan det vara så att din sida är i utf-8 och du behöver ange det då du bygger din array?
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
l-boyMedlem sedan juli 2003223 inlägg
Sidan använder ISO-8859-1.
Har fått ordning på &-tecken och mellanslag genom att köra HttpUtility.UrlEncode på både namn och värde för sig i post-strängen.
Nu blir dock ÅÄÖ tokiga.
WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
myWebClient.Encoding = Encoding.Default;
byte[] byteArray = Encoding.Default.GetBytes(postData);
byte[] responseArray = myWebClient.UploadData(postURL, "POST", byteArray);
i web.config:
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" culture="sv-SE" />
l-boyMedlem sedan juli 2003223 inlägg
Alltså:
Postar jag in : "ÅÄÖ &" får jag rätt svenska tecken - "&" och " " blir tokiga.
Postar jag in : HttpUtility.UrlEncode("ÅÄÖ &") får jag rätt på "&" och " " medans ÅÄÖ blir tokiga.
Har ingen lust att behöva välja... ;)
l-boyMedlem sedan juli 2003223 inlägg
Löste sig med HttpUtility.UrlEncodeUnicode.