Разбор данных в кодировке UTF8 из веб-службы - PullRequest
1 голос
/ 12 января 2011

Я анализирую дату с http://toutankharton.com/ws/localisations.php?l=75

Как видите, он закодирован (<name>Paris 2ème</name>).

Мой код следующий:

using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                var contents = reader.ReadToEnd();

                XElement cities = XElement.Parse(contents);

                    var t = from city in cities.Descendants("city")
                                                    select new City
                                                    {
                                                        Name = city.Element("name").Value,
                                                        Insee = city.Element("ci").Value,
                                                        Code = city.Element("code").Value,
                                                    };
            }

Разве new StreamReader(stream, Encoding.UTF8) не достаточно?

1 Ответ

2 голосов
/ 12 января 2011

Это похоже на то, что происходит, если вы берете utf8-байтов и выводите их с несовместимой кодировкой, такой как ISO8859-1. Вы знаете, что такое настоящий персонаж? Возвращаясь назад, используя ISO8859-1 для получения байтового массива и UTF8 для его чтения, выдает «è».

var input = "è";
var bytes = Encoding.GetEncoding("ISO8859-1").GetBytes(input);
var realString = Encoding.UTF8.GetString(bytes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...