Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP.NET 3.x > Språk - C#

StreamReader returnerar å-ä-ö fel

pbf
pbf

Gradering

#14448

Tjenare!

Har ett jQuery.ajax-GET-anrop som jag skickar till en Generic Handler bestående av bl.a. följande kod:

 
string formattedUri = String.Format(WebServiceURL, card.CardName, preferedLanguage);

HttpWebRequest webRequest = GetWebRequest(formattedUri);

HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

string jsonResponse = string.Empty;

using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) {
jsonResponse = sr.ReadToEnd();
}


Skickar in ett ID som jag sedan använder för att hämta namnet på vederbörande, i detta fall "Göran Persson".

Under min debugging-tour i denna kod så skrivs Göran Persson ut som det ska tills sr.ReadToEnd() körs. Jag har Encoding.UTF8, databastabellen och därmed fältet är UTF-enkodat. I jQuery.Ajax-anropet har jag definierat:

contentType: "application/json; charset=utf-8"

och i min Generic Handler har jag högst upp:

context.Response.ContentEncoding = Encoding.UTF8;

Vad kan jag mer testa?

Detta måste på nåt sätt ske innuti min StreamReader då det är den som anropar response.GetResponseStream() och hämtar datan från Wikipedia. Just nu replace:ar jag efter StreamReaders using-block, vilket inte har nån betydelse egentligen förutom att det skrivs ut med rätt bokstäver nu, men den hämtar inte korrekt wikipediaartikel då hämtningen av data sker inne i StreamReadern.
Just nu returnerar den Göran Persson som: G\u00c3\u00b6ran Persson och när detta skickas tillbaka till min aspx-sida skrivs det ut som: Göran Persson. Jag kan ersätta "\u00c3" till "ö" och "\u00b6" till "ä", men grejen är att jag ska returnera data, och den hämtar datan i StreamReadern.

Har även kollat upp att avändaren skickar UTF8, så då ska jag även ta emot som UTF8 som jag redan gör.

Vad ska jag göra?



Redigerad av pbf
Anledning:

life is short, enjoy it!
ID: #14448 | Skapades: 2009-02-12 11:27:26 | Tråden har 6 svar och har lästs 1992 gånger.

Shadi
Shadi

Gradering

#14449

Vad händer om du använder denna kod?

Encoding = System.Text.Encoding.Default

Administratör på AspKoll.se!
ID: #14449 | Skapades: 2009-02-12 12:08:21

pbf
pbf

Gradering

#14450

Har testat i princip alla enkodningar som går att testa.

life is short, enjoy it!
ID: #14450 | Skapades: 2009-02-12 12:11:58

Shadi
Shadi

Gradering

#14451

Jag har kollat runt lite på nätet och de flesta verkar vara eniga om att det är just encodingen som är problemet.

Borde inte det gå att skicka med en andra parameter som ser till att den automatiskt kontrollerar encodingen? Har du testat med att bestämma encodingen som gäller för just svenska språket?

System.Text.Encoding.GetEncoding(1252)

Administratör på AspKoll.se!
ID: #14451 | Skapades: 2009-02-12 12:18:00

pbf
pbf

Gradering

#14455

Nope. Samma sak.

life is short, enjoy it!
ID: #14455 | Skapades: 2009-02-12 13:13:15

Shadi
Shadi

Gradering

#14461

Kör du HTMLEncode innan du sparar data i databastabellen? Hur sparas å ä ö i databasen? Som "å ä ö", "å ä ö" eller på annat sätt?

Administratör på AspKoll.se!
ID: #14461 | Skapades: 2009-02-12 18:11:10

pbf
pbf

Gradering

#14462

Nejnej. Hehe, det har jag kollat ;-)

Det sparas som det ska. D.v.s. som "å ä ö".

life is short, enjoy it!
ID: #14462 | Skapades: 2009-02-12 18:29:13
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy