WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   StreamReader konverterar å-ä-ö (https://www.wn.se/forum/showthread.php?t=35087)

peterbf 2009-02-12 10:26

Tjenare!

Har ett jQuery.ajax-GET-anrop som jag skickar till en Generic Handler bestående av bl.a. följande kod:
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\n 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?

Jonas 2009-02-12 13:31

Är filen sparad dom UTF8 ?

peterbf 2009-02-12 14:23

Jag gör ett anrop till www.dapper.net för att hämta data från www.wikipedia.org, båda dessa sidor har UTF8 som Content Type.

Kan inte förstå detta.

Westman 2009-02-12 15:21

Jag har haft exakt samma bekymmer och min fullösning var att använda htmlencode för att få åäö att lira ordentligt.

peterbf 2009-02-12 15:58

Hur då menar du? Exakt var bör jag HtmlEncode:a?

Jonas 2009-02-13 16:36

Är filen sparad som UTF8? Alltså, när du väljer "Spara som", så kan man välja att filen skall sparas som UTF8.

Bara för att Content-Type är utf8 betyder det inte att filen är utf8, det har en tendens att ge många skumma problem.

tartareandesire 2009-02-13 16:43

Citat:

Originally posted by Jonas@Feb 13 2009, 17:36
Är filen sparad som UTF8? Alltså, när du väljer Spara som, så kan man välja att filen skall sparas som UTF8.
Bara för att Content-Type är utf8 betyder det inte att filen är utf8, det har en tendens att ge många skumma problem.

Det beror ju lite på vilket program man använder. Det går ofta att välja teckenkodning redan innan man sparar.

Westman 2009-02-13 19:29

Citat:

Originally posted by peterbf@Feb 12 2009, 16:58
Hur då menar du? Exakt var bör jag HtmlEncode:a?
Utifrån det lilla jag ser så skulle jag prova att köra htmlencode på jsonResponse

peterbf 2009-02-14 16:38

Nej, går inte.

Som sagt, allt sker innuti StreamReader:n, så det är la där jag måste göra nåt?

digiArt 2009-02-14 18:08

Hämta teckenkodningen från HttpWebResponse

Kod:

Encoding.GetEncoding(response.CharacterSet);


Alla tider är GMT +2. Klockan är nu 18:04.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson