![]() |
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); 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? |
Är filen sparad dom UTF8 ?
|
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. |
Jag har haft exakt samma bekymmer och min fullösning var att använda htmlencode för att få åäö att lira ordentligt.
|
Hur då menar du? Exakt var bör jag HtmlEncode:a?
|
Ä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. |
Citat:
|
Citat:
|
Nej, går inte.
Som sagt, allt sker innuti StreamReader:n, så det är la där jag måste göra nåt? |
Hämta teckenkodningen från HttpWebResponse
Kod:
Encoding.GetEncoding(response.CharacterSet); |
Citat:
EDIT: Det hjälpte nog inte dig. Hmm... |
Testade att hämta Encodingen från min HttpWebResponse, bra förslag förresten. Anyway, det returnerade Unicode (UTF-8), vilket tyvärr inte hjälper mig alls.
Alltså, den innehåller inte felaktiga tecken innan strängen hamnar i StreamReader:n, utan det sker som sagt innuti StreamReader:n. Och jag har ju korrekt Encoding, därför jag frågar om hjälp här. Vet ni nåt mer man kan testa? ;-) |
Har du provat med att använda Encoding.Unicode istället för Encoding.UTF8?
/Patrik Berggren |
Enklast borde väl vara att ansluta med debuggern och se vad som händer? Testa att byta och köra med lite olika encodings? Någonting lär ju fungera
|
Vet inte riktigt om jag förstår problemet. Detta fungerar hur bra som helst för mig direkt i ett nytt VS projekt.
Kod:
Kod:
|
Citat:
Kod:
private readonly static string WebServiceURL = @"http://www.dapper.net/transform.php?dappName=Fetchwikipediacontent&transformer=JSON&v_SearchTerm={0}&v_Language={1}"; |
Nej den returnerar
Kod:
|
|
|
jag får precis samma som om man klickar på länken du lade in nu sist med "en" på slutet. Kan dock inte se något direkt svar utan bara de "inputVars" som skickades med.
Kod:
{"dapper":{"status":"OK","dappName":"Fetchwikipediacontent","dappTitle":"Fetch wikipedia content","urls":"\n * * *http:\/\/en.wikipedia.org\/wiki\/David_Beckham\n * * *http:\/\/en.wikipedia.org\/wiki\/Bob_Marley\n * *","applyToUrl":"http:\/\/en.wikipedia.org\/wiki\/David_Beckham","executionTime":"0.0070","ranAt":"2009-02-17 06:46:56","encoding":"UTF-8","ranEventChain":"true","inputVars":"\n * * *en\n * * *G\u00c3\u00b6ran H\u00c3\u00a4gglund\n * *"},"fields":{"ContentParts":[{"value":"To view this page without search results but with all search options, use Special:Search. For more information about searching Wikipedia, see Wikipedia:Searching. For image search there are more options at Wikimedia Commons search.","originalElement":"p","fieldName":"ContentParts"},{"value":"Note: Choosing the right search terms is the key to finding the information you need. If you add terms related to the general subject that the information you are searching for comes under, it may provide better results. Try to avoid searches containing only words in quotes, as they may not find a page you are looking for.","originalElement":"p","fieldName":"ContentParts"}]}} Jag har svårt att tro att detta skulle vara ett problem i .NET utan det är något annat som är strulet. Vill du se vad som händer i StreamReadern i debugg:en kan du sätta upp Visual Studio så att den laddar in .NET källkoden för StreamReadern under debuggen. Finns många exempel på hur man gör och här är ett. http://blogs.msdn.com/sburke/archive/2008/...ource-code.aspx |
Jo jag har också konstaterat att indatat redan är "fel" men eftersom jag har ett liknande problem så tänkte jag ge mig på det en gång till. Jag har provat med diverse konverteringar och jag ger upp nu. Att ersätta \Uxxxx med motsvarande tecken är det enda som fungerat, encoding ger mig bara huvudvärk...
|
500 spänn till den som löser det :D
|
Citat:
Kod:
Encoding enc = Encoding.GetEncoding(response.CharacterSet); Kod:
|
Alla tider är GMT +2. Klockan är nu 17:08. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson