Laden...

Webrequest - Umlaute werden falsch dargestellt

Erstellt von Christoph Burgdorf vor 16 Jahren Letzter Beitrag vor 16 Jahren 4.308 Views
Christoph Burgdorf Themenstarter:in
365 Beiträge seit 2004
vor 16 Jahren
Webrequest - Umlaute werden falsch dargestellt

Hallo zusammen,

ich speichere mir mit folgendem Code den Quelltext einer Seite:

		public String getPageByUrl(String url)
		{
			HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
   			HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
   			Stream stream = webResponse.GetResponseStream();
            StreamReader streamReader = new StreamReader(stream, System.Text.Encoding.Default);
    		String html = streamReader.ReadToEnd();
            
    		return html;
		}

Das klappt soweit auch ohne Probleme. Allerdings werden Umlaute, die ich aus dem Quelltext entnehme falsch dargestellt. Im Header der Seite steht charset utf-8.

Vor einiger Zeit hatte ich das Problem mit den Umlauten noch nicht. Folgenden Code habe ich dafür benutzt:

		private string iso8859_unicode(string src) 
		{
                Encoding iso = Encoding.GetEncoding("iso-8859-1");
                Encoding unicode = Encoding.UTF8;
                byte[] isoBytes = iso.GetBytes(src);

                return unicode.GetString(isoBytes);           
		}

Ich habe statt ISO auch schon UTF-8 versucht, leider ohne Erfolg. Vielleicht hat jemand von euch einen Tipp woran es liegen könnte.

Viele Grüße

bvsn

316 Beiträge seit 2006
vor 16 Jahren

"wie" falsch werden denn die umlaute dargestellt?

&umla; für ä? (weil dann würd ich sagen einfach HttpUtility.HtmlDecode(code);

greetz

"Flache Hierarchien schaffen! Das muss konkret nicht unbedingt etwas bedeuten, kommt aber immer sehr gut an."
Bernd Stromberg

Christoph Burgdorf Themenstarter:in
365 Beiträge seit 2004
vor 16 Jahren

Hi,

guter Einwand, das hätte ich natürlich direkt posten sollen 😉

Hier eine kleine Auswahl der Umlaute:

ü = ü
ÃY = ß
ä = ä

Viele Grüße

bvsn

316 Beiträge seit 2006
vor 16 Jahren

aaah, das problem kenne ich ... nicht. ich programmier zwar auch schon ne weile auf .net aber ich bin irgendwie anfänger geblieben 😉 sorry.

edit: ach nein das erinnert mich tatsächlich an ein ehemaliges ähnliches problem!

du hast


Encode unicode = Encoding.UTF8;

hast du mal versucht dafür andere zu verwenden? ich glaube ich hatte das problem damals mit Encoding.ASCII gelöst.

"Flache Hierarchien schaffen! Das muss konkret nicht unbedingt etwas bedeuten, kommt aber immer sehr gut an."
Bernd Stromberg

N
22 Beiträge seit 2008
vor 16 Jahren

Ich hatte da mal ein ganz ähnlich gelagertes Problem. Es lag schlicht am falschen Encoding.

Soweit ich weis benutzt .NET im Unicode als Standard. Wenn du aber einen UTF8 Formatierten Text hast, bekommst du genau solche Zeichen raus. Versuche mal das ganze nach UTF8 zu konvertieren.


byte[] streamData = // lese deinen Stream in ein Byte-Array.
byte[] encodedData = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, streamData);
string text = Encoding.UTF8.GetString(encodedData);

Ein ähnlicher Algorythmus hatte mir damals geholfen.

Eventuell reicht aber auch nur folgendes zu machen.


string text = Encoding.UTF8.GetString(streamData);

Christoph Burgdorf Themenstarter:in
365 Beiträge seit 2004
vor 16 Jahren

Das hat leider auch nicht geholfen. Das ist doch wie verhext. Von einen Tag auf den anderen geht es nicht mehr, obwohl die Seite immernoch nach charset-utf8 kodiert ist.

Viele Grüße

bvsn