首页 新闻 赞助 找找看

post提交html源码该如何编码?

0
悬赏园豆:30 [已解决问题] 解决于 2010-10-20 12:31

ASCIIEncoding encoding = new ASCIIEncoding();

string postData = "type=CVWeekly&html=" +strHtml + "&sign=" + strSign;

 byte[] data = encoding.GetBytes(postData);

 

1.strHtml是抓取网页的源码,其中有不少&字符,会导致Request接收不完整。

2.抓取的网页是gb2312,测试程序是控制台应用程序,post提交到的aspx也是gb2312编码,开始为解决&字符的问题,用HttpUtility.UrlEncode编码后提交,但接到时解码,总是乱码。

问题补充: 又搞了搞,接收的时候,总显示为乱码,不知何故。 另建了一asp.net网站,编码为gb2312,与接收的网站编码相同,依然乱码,头大。
狗尾草.的主页 狗尾草. | 初学一级 | 园豆:94
提问于:2010-10-19 17:12
< >
分享
最佳答案
0

客户端 js    encodeURIComponent

服务端 C#  Server.UrlEncode

收获园豆:30
sparks345 | 菜鸟二级 |园豆:255 | 2010-10-20 00:26
找到乱码的原因了,去掉这行:ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = Encoding.Default.GetBytes(postData); 改为 byte[] data =encoding.GetBytes(postData); 转为ASCII出错。
狗尾草. | 园豆:94 (初学一级) | 2010-10-20 12:30
其他回答(2)
0

HttpUtility.HtmlEncode不可以吗?

rad | 园豆:28 (初学一级) | 2010-10-19 17:53
HtmlEncode会将字符 < 和 > 编码为 &lt; 和 &gt;,多了更多的&符号 指定HttpWebRequest的参数时需要这种形式"type=CVWeekly&html=" +strHtml ,&符号会截断正常的字符。
支持(0) 反对(0) 狗尾草. | 园豆:94 (初学一级) | 2010-10-19 18:03
0

觉得可以这样操作

client.aspx中调用 UploadInfo("我的", "你的", "他的");

public static void UploadInfo(string type,string strHtml,string strSign)
{
WebClient client
= new WebClient();
client.Encoding
= System.Text.Encoding.UTF8;
UTF8Encoding encoding
= new UTF8Encoding();
string json = "{'type':'"+type+"','html':'" + strHtml + "','sign':'" + strSign+ "'}";
byte[] dataArray = encoding.GetBytes(json);
client.UploadData(
"http://localhost:4004/WebForm1.aspx?count=" + dataArray.Length, encoding.GetBytes(json));
}

server.aspx中获取上传的字节流,进行反序列化

protected void Page_Load(object sender, EventArgs e)
{
string json = DecodeInputStream(Request);
JavaScriptSerializer javaScriptSerializer
= new JavaScriptSerializer();
UploadInfo info
= javaScriptSerializer.Deserialize<UploadInfo>(json);

}


public static string DecodeInputStream(HttpRequest request)
{
Stream stream
= request.InputStream;
stream.Seek(
0, SeekOrigin.Begin);
int count = int.Parse(request.QueryString["count"]);
byte[] dataArray = new byte[count];
stream.Read(dataArray,
0, count);
UTF8Encoding encoding
= new UTF8Encoding();
return encoding.GetString(dataArray);
}

public class UploadInfo
{
public string Type { get; set; }

public string Html { get; set; }

public string Sign { get; set; }
}

 

       

wgz | 园豆:1254 (小虾三级) | 2010-10-19 22:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册