Я пытаюсь позвонить обычному веб-клиенту, чтобы получить поток XML для приложения отслеживания сообщений для WP7. Это работает, и я получаю XML, но проблема в том, что, поскольку я живу в Швеции, у нас есть специальные символы, такие как å ö ä и т. Д., И для этих символов я получаю только коробку с вопросительным знаком внутри.
XML-файл, который я хочу получить, выглядит следующим образом:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<pactrack version="2.0" date="Sat Jan 14 18:29:26 CET 2012" size="2125" lang="SE">
<header>
<noofparcelentries>1</noofparcelentries>
...
Итак, кодировка ISO-8859-1, и я думаю, это моя проблема. Я пытался прочитать здесь на форуме для решения, и некоторые говорят, что формат поддерживается, а некоторые нет:
Чтение iso-8859-1 RSS-канал C # WP7
Я пытался добавить разные кодировки к клиенту, но, похоже, ничего не помогло, в моем xml всегда отсутствуют специальные символы. Однако есть странное поведение, которое меня немного пугает, если я добавляю неправильный номер отслеживания, и вместо цифр, введенных в специальные символы, я могу внезапно прочитать некоторые из специальных символов, xml, получаемый с сервера, представляет собой сообщение об ошибке, содержащее номер для отслеживания, см. ниже, но определение xml такое же.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<pactrack version="2.0" date="Sat Jan 14 18:34:43 CET 2012" size="389" lang="SE" >
<header>
<noofparcelentries>1</noofparcelentries>
<noofuniqueparcels>1</noofuniqueparcels>
</header>
<body>
<parcel id="8538öööåå54248SE"> //I can read this road of xml suddenly
<customerref></customerref>
<internalstatus>0</internalstatus>
У кого-нибудь есть идеи? Я новичок и полностью потерян из-за этой проблемы, поэтому любая помощь будет принята с благодарностью! Есть ли разница в первом xml и втором? Мне кажется, может быть, я не вижу специальных чартеров, вложенных в узлы, может ли это быть проблемой?
WebClient client = new WebClient();
public MainPage()
{
InitializeComponent();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
if (e.UserState as string == "mobiforge")
{
txtStatus.Text = e.BytesReceived.ToString() + "bytes received.";
}
}
public void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled)
{
MessageBox.Show(e.Result);
}
}
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
client.DownloadStringAsync(new Uri("http://server.logistik.posten.se/servlet/PacTrack?lang=SE&kolliid=85380954248SE"), "posten");
}