从Web服务解析UTF8编码数据

时间:2011-01-12 17:39:03

标签: c# encoding

我正在从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 个答案:

答案 0 :(得分:2)

如果您使用utf8字节并使用不兼容的编码(如ISO8859-1)输出它们,就会发生这种情况。你知道真正的角色是什么吗?回过头来,用ISO8859-1获取一个字节数组,用UTF8读取它,得到“è”。

var input = "è";
var bytes = Encoding.GetEncoding("ISO8859-1").GetBytes(input);
var realString = Encoding.UTF8.GetString(bytes);