今天遇到了这样一个问题,我在winform中调用url可是怎么传也是乱码,不知道怎么回事,代码如下,由于是刚刚接触c#还不太了解,望达人赐教,问题解决了可以加分哦!
//字符编码转换
public String utfTogb(String str)
{
try
{
String endStr;
String result;
System.Text.UnicodeEncoding unicodi = new UnicodeEncoding();
System.Text.Encoding gb2312 = System.Text.Encoding.GetEncoding("gb2312");
//Encoding utf8 = Encoding.GetEncoding(65001);
//Encoding gb2312 = Encoding.GetEncoding("gb2312");
byte[] tempStr = unicodi.GetBytes(str);
byte[] targetStr = Encoding.Convert(unicodi, gb2312, tempStr);
endStr = gb2312.GetString(targetStr);
MessageBox.Show(endStr);
result = System.Web.HttpUtility.UrlDecode(endStr);
MessageBox.Show(result);
return result;
}
catch(Exception e){
MessageBox.Show(e.ToString());
return null;
} }
private void button1_Click(object sender, EventArgs e)
{
String str;
WebRequest request = WebRequest.Create("http://agent.net/content="+this.utfTogb("你好"));
//HttpWebResponse rep = (HttpWebResponse)request.GetResponse();
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
label4.Text = utfTogb("你好!");
str = utfTogb(sr.ReadToEnd().ToString());
label1.Text = str;
resStream.Close();
sr.Close();
}
希望达人帮忙看下这段代码哪有问题,项目进行中,期待解决办法。
//字符编码转换
public String utfTogb(String str)
{
try
{
String endStr;
String result;
System.Text.UnicodeEncoding unicodi = new UnicodeEncoding();
System.Text.Encoding gb2312 = System.Text.Encoding.GetEncoding("gb2312");
//Encoding utf8 = Encoding.GetEncoding(65001);
//Encoding gb2312 = Encoding.GetEncoding("gb2312");
byte[] tempStr = unicodi.GetBytes(str);
byte[] targetStr = Encoding.Convert(unicodi, gb2312, tempStr);
endStr = gb2312.GetString(targetStr);
MessageBox.Show(endStr);
result = System.Web.HttpUtility.UrlDecode(endStr);
MessageBox.Show(result);
return result;
}
catch(Exception e){
MessageBox.Show(e.ToString());
return null;
} }
private void button1_Click(object sender, EventArgs e)
{
String str;
WebRequest request = WebRequest.Create("http://agent.net/content="+this.utfTogb("你好"));
//HttpWebResponse rep = (HttpWebResponse)request.GetResponse();
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
label4.Text = utfTogb("你好!");
str = utfTogb(sr.ReadToEnd().ToString());
label1.Text = str;
resStream.Close();
sr.Close();
}
希望达人帮忙看下这段代码哪有问题,项目进行中,期待解决办法。
解决方案 »
- C#怎么实现从一个文件的指定行开始读取数据
- c# 根据ip+掩码求ip网段
- 关于C#中委托和事件!
- 怎么使用?
- 大家都在哪个控件中画图,PictureBox的坐标原点固定在该控件的左上角,无法直接设置到该控件的中心,需要大量换算很不方便。
- C#做窗体应用程序时 picturebox 怎样同时显示多张图片
- c# contextMenu 动态添加二级菜单点击问题!
- 如何读取xml文件莫节点所有的值呀,用c#!!xml高手请了!!
- 没有做过TCP的东东,不知道这个接口如何下手,请各位高手指点下
- 如何实现对windows文件夹的复制呀!
- .net 怎么用md5产生一个16位的字符串?
- c# DATASET转换XML中的数据库格式DATETIME在XML的保存
这里URL有问题 ,http://agent.net/content= 没有这种写法2. +this.utfTogb("你好") 在URL中不要转GB2313, 可以用 HttpUtility.urlencode("..."); 说明一下,其实C#默认是就可以显示中文的。
{
String str;
WebRequest request = WebRequest.Create("http://agent.bucp.net/websend/z_send.aspx?content="+HttpUtility.UrlEncode("你好"));
//HttpWebResponse rep = (HttpWebResponse)request.GetResponse();
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
str = sr.ReadToEnd().ToString();
Console.WriteLine(str);
label1.Text = str; resStream.Close();
sr.Close();
}
这样在服务器上接收的时候就是乱码的,望有达人赐教。
url = System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.GetEncoding("gb2312"));
在winform中使用手机发短信和发邮件我都试过,可以