You need to either set the Encoding property of the WebClient to the appropriate encoding, or use DownloadData to get a byte array and use the Encoding directly to convert as a separate step. The latter might be preferable if you are not sure, as you should try and read the beginning of the HTML document until you read the encoding declaration (<meta http-equiv="Content-Type" content="text/html; charset=XXX">). Once you know that (and you should be able to read at least that far in most encodings no matter what the document is encoded in) then you can re-interpret according to the declared encoding without needing to re-download the data (since you've got the bytes locally).