I recently came across an issue using the WebClient.DownloadString method in System.Net that was causing UTF8 encoded data to not come through properly, and instead was showing odd characters.
Researching the issue led me to the following Stack Overflow articles:
The accepted answers on both work well, so I've put together a functional example using C# to illustrate the behavior and results.
DownloadString (no encoding specified)
DownloadString (encoding specified)
DownloadData (encoding specified)
Click here to see a fully functional demo.
Matt Pavey is a Microsoft Certified software developer who specializes in ASP.Net, VB.Net, C#, AJAX, LINQ, XML, XSL, Web Services, SQL, jQuery, and more. Follow on Twitter @matthewpavey
Researching the issue led me to the following Stack Overflow articles:
- http://stackoverflow.com/questions/7137165/webclient-downloadstring-results-in-mangled-characters-due-to-encoding-issues-b
- http://stackoverflow.com/questions/4716470/webclient-downloadstring-returns-string-with-peculiar-characters
The accepted answers on both work well, so I've put together a functional example using C# to illustrate the behavior and results.
DownloadString (no encoding specified)
// variables
string Url = "https://mysafeinfo.com/api/data?list=states&format=json&alias=nm=name,ab=code,cp=capital,yr=year&select=capital&ab=GU";
// DownloadString (no encoding specified)
using (WebClient client = new WebClient())
{
Console.WriteLine(client.DownloadString(Url));
}
// result
[
{
"capital": "Hagåtña Dededo"
}
]
DownloadString (encoding specified)
// variables
string Url = "https://mysafeinfo.com/api/data?list=states&format=json&alias=nm=name,ab=code,cp=capital,yr=year&select=capital&ab=GU";
// DownloadString (encoding specified)
using (WebClient client = new WebClient())
{
// specify encoding
client.Encoding = System.Text.UTF8Encoding.UTF8;
// output
Console.WriteLine(client.DownloadString(Url));
}
// result
[
{
"capital": "Hagåtña Dededo"
}
]
DownloadData (encoding specified)
// variables
string Url = "https://mysafeinfo.com/api/data?list=states&format=json&alias=nm=name,ab=code,cp=capital,yr=year&select=capital&ab=GU";
// DownloadData (encoding specified)
using (WebClient client = new WebClient())
{
Console.WriteLine(System.Text.UTF8Encoding.UTF8.GetString(client.DownloadData(Url)));
}
// result
[
{
"capital": "Hagåtña Dededo"
}
]
Click here to see a fully functional demo.
Matt Pavey is a Microsoft Certified software developer who specializes in ASP.Net, VB.Net, C#, AJAX, LINQ, XML, XSL, Web Services, SQL, jQuery, and more. Follow on Twitter @matthewpavey
No comments: