首先,需要了解URL中文参数值的乱码问题的原因。在URL中,中文参数值的字节序列会被转义为%XX的形式,其中XX是中文字符的编码表示。但是在使用.Net的Http请求时,如果不指定字符编码方式,系统会默认使用UTF-8编码,而造成中文乱码的现象。
解决方法:
- 在发送Http请求时,需要手动指定字符编码方式为GB2312或者gbk,即在HttpWebRequest对象的Headers中添加请求头信息:Content-Type: text/html; charset=gb2312,示例代码如下:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
byte[] data = Encoding.ASCII.GetBytes(param);
request.ContentType = "text/html; charset=gb2312";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
string content = reader.ReadToEnd();
reader.Close();
response.Close();
- 在接收Http响应后,需要手动将返回的内容进行转码为中文,即在StreamReader构造函数中,明确指定编码方式为GB2312或者gbk,示例代码如下:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
string content = reader.ReadToEnd();
reader.Close();
response.Close();
综上所述,我们可以通过手动指定字符编码方式来解决.Net获取URL中文参数值的乱码问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net获取URL中文参数值的乱码问题解决方法总结 - Python技术站