Gå til innhold

C#: [Løst]System.Net.Webclient - æ ø å


Anbefalte innlegg

Hei

 

Jeg har en string med en beskjed som inneholder æ ø å som skal sendes til en sms-gateway. All tekst må være ISO(ikke utf8), i php bruker man utf8_decode(). Men jeg klarer ikke å finne ut hvordan jeg skal gjøre det med Webclient.

 

Har prøvd dette blant annet.

wc.Headers.Add("CharSet", "ISO-8859-1");

 

Stringen er helt riktig når man printer den i en messagebox f.eks, men ikke når meldinga kommer frem til mottaker. ø blir '??' i meldinga.

 

Er det noen som vet hva jeg må gjøre for at det skal bli riktig ?

Lenke til kommentar
Videoannonse
Annonse

Takk for svar.

Jeg har prøvd noen varianter av det du foreslår, men får det ikke til enda.

 

Slik ser koden ut (burde postet det i første omgang)

		string serverRequest = "http://127.0.0.1/sendsms.php";
	serverRequest += "?username=" + this.username;
	serverRequest += "&password=" + this.password;
	serverRequest += "&customer_id=" + this.customer_id;
	serverRequest += "&recipient=" + recipient;
	serverRequest += "&message=" + message;
	serverRequest += "&sender=" + this.sender;

   try
	{
		using (WebClient wc = new WebClient())
		{

			serverResult = wc.DownloadString(serverRequest);
		}
	}

 

Den gir meg kun "??" etc isteden for æøå.

 

har prøvd blant annet denne metoden på string message

	public string Utf8Decode(string input)
{
	return Encoding.GetEncoding("iso-8859-1").GetString(Encoding.UTF8.GetBytes(input));
}

 

Men det funker heller ikke.

Har du noen forslag? Dyr feilsøking dette her ;)

Lenke til kommentar

Å konvertere mellom tegnsettene slik som det der vil ikke forandre noe, de alfanummeriske tegnene vi bruker er like i både utf8 og iso-8859-1, så det som går ut vil være helt likt det som kommer inn.

 

Skal du legge den i querystring på den måten må du sikkert URL-enkode det og legge til "encoding=8859-1" content-type i http headeren.

 

wc.Encoding = "ISO-8859-1";
serverRequest = HttpUtility.UrlEncode(serverRequest , GetEncoding("ISO-5589-1"));
serverResult = wc.DownloadString(serverRequest);

Endret av MailMan13
Lenke til kommentar

Hjertelig takk MailMan! :)

Det virket veldig bra.. Jeg leste om urlencode tidligere i dag, men fant den ikke i system.web, men måtte bare referere til den så kom den..

 

Fungerende kode ser slik ut nå:

serverRequest += "&message=" + System.Web.HttpUtility.UrlEncode(message,Encoding.GetEncoding(28591));

Endret av bjeffbjeff
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...