Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpRequestHeader内容编码问题_C#_Encoding_Webclient - Fatal编程技术网

C# HttpRequestHeader内容编码问题

C# HttpRequestHeader内容编码问题,c#,encoding,webclient,C#,Encoding,Webclient,我使用下面的代码片段将HTTP响应下载到本地文件。 有时我的url中的内容是多语言的(中文、日文、泰文数据等)。 我使用ContentEncoding头来指定我的内容采用UTF-8编码,但这对以ASCII生成的本地输出文件没有影响。因此,多语言数据被破坏。有什么帮助吗 using (var webClient = new WebClient()) { webClient.Credentials = CredentialCache.DefaultCreden

我使用下面的代码片段将HTTP响应下载到本地文件。 有时我的url中的内容是多语言的(中文、日文、泰文数据等)。 我使用ContentEncoding头来指定我的内容采用UTF-8编码,但这对以ASCII生成的本地输出文件没有影响。因此,多语言数据被破坏。有什么帮助吗

using (var webClient = new WebClient())
        {
            webClient.Credentials = CredentialCache.DefaultCredentials;
            webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0");
            webClient.Headers.Add(HttpRequestHeader.ContentEncoding, "utf-8");

            webClient.DownloadFile(url, @"c:\temp\tempfile.htm");
        }

ContentEncoding
标题不用于指定字符集。客户端使用它来说明它支持哪种编码(压缩)

客户端无法告诉服务器要发送的字符集。服务器发送其数据和一些标题字段,说明正在使用的字符集。通常它位于
ContentType
标题中,看起来像:
text/html;字符集=UTF-8

使用
WebClient
时,您希望将
Encoding
属性设置为备用属性,以便在服务器未识别字符集时,将使用默认值。例如:

WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
string s = client.DownloadString(DownloadUrl);

有关更多信息,请参阅。

如果要支持宽字符,应使用类似utf-16UTF8的内容。UTF8不是ASCII/ANSI,但UTF8支持ASCII字符集。