Search code examples
c#unicodecharacter-encodingsystem.net.httpwebrequest

Encoding for international character


I am making a Google suggestion API

And I am requtesting "¿cómo estás" word where it should have return

¿cómo estás ¿cómo estás hoy ¿cómo estás meaning ¿cómo estás tú ¿cómo estás cuando nadas ¿cómo estás yo (1) ¿cómo estás yo ¿cómo estás response ¿cómo estás in english

But it is showing

[{"Phrase":"como estás"},{"Phrase":"cómo estás en inglés"},{"Phrase":"como estás em espanhol"},{"Phrase":"cómo estás lleva acento"},{"Phrase":"cómo estás tú"},{"Phrase":"cómo estás hola"},{"Phrase":"como estas means"},{"Phrase":"como estas reply"},{"Phrase":"como estas usted"},{"Phrase":"como estas hoy"}]

and response is

enter image description here

Ignore the keywords.

You can see the

¿

is missing in result

My code is

System.Net.HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest;
request.ContentType = "text/html; charset=utf-8";
using (System.Net.HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-2"));
    result = reader.ReadToEnd();
}

XDocument doc = XDocument.Parse(result);

if (!ReferenceEquals(doc.Descendants("suggestion"), null) && doc.Descendants("suggestion").Count() > 0)
{
    var suggestions = from suggestion in doc.Descendants("CompleteSuggestion") select new GoogleSuggestion { Phrase = suggestion.Element("suggestion").Attribute("data").Value };
    allSuggestions = suggestions.ToList();
}

Please advise which encoding should is use...


Solution

  • Just if someone could get help..

    I solved it by using

     StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));