再问Post中文数据的问题

yayx 2007-01-22 12:44:54
C#里POST数据需要一个byte[]
按照网上搜到的方法用
ASCIIEncoding AE = new ASCIIEncoding();
byte[] bytePost = AE.GetBytes(strData);
这样进行编码,结果中文全部是 乱码,已经弄得快晕了.......

试了UTF8Encoding一大堆,又试了UrlEncoder方法,结果都不行

问:
1 网页POST的数据最综是按照什么编码的? 做ajax时候说是可以统一用UTF-8解决问题? 但是那种%20类型编码应该是ANSI编码,那到底是怎么编码的呢?

2 POST中文数据C#代码到底怎么写?
...全文
256 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilove8 2007-01-22
  • 打赏
  • 举报
回复
up
机器人 2007-01-22
  • 打赏
  • 举报
回复
调用:

CookieContainer cc = new CookieContainer();
string response = RequestUrl("www.123.com", "txt1=中文测试&txt2=中文测试", ref cc);
机器人 2007-01-22
  • 打赏
  • 举报
回复
/// <summary>
/// RequestUrl: request some url, return the response.
/// </summary>
/// <param name="strUrl">the url</param>
/// <param name="strPostDatas">the post data</param>
/// <param name="objCookieContainer">cookie's(session's) container</param>
/// <returns></returns>
public static string RequestUrl(string strUrl, string strPostDatas, ref CookieContainer objCookieContainer)
{
HttpWebResponse res = null;
string strResponse = "";

try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";

if(objCookieContainer == null)
objCookieContainer = new CookieContainer();
req.CookieContainer = objCookieContainer;

StringBuilder objEncodedPostDatas = new StringBuilder();
byte[] postDatas = null;

req.ContentLength = 0;
if (strPostDatas != null && strPostDatas.Length > 0)
{
string[] datas = strPostDatas.TrimStart('?').Split(new char[] {'&'});
for(int i=0; i<datas.Length; i++)
{
string[] keyValue = datas[i].Split(new char[] {'='});
if(keyValue.Length >= 2)
{
objEncodedPostDatas.Append(HttpUtility.UrlEncode(keyValue[0]));
objEncodedPostDatas.Append("=");
objEncodedPostDatas.Append(HttpUtility.UrlEncode(keyValue[1]));
if(i < datas.Length - 1)
{
objEncodedPostDatas.Append("&");
}
}
}
postDatas = Encoding.UTF8.GetBytes(objEncodedPostDatas.ToString());
req.ContentLength = postDatas.Length;
using(Stream reqStream = req.GetRequestStream())
{
reqStream.Write(postDatas, 0, postDatas.Length);
}
}

res = (HttpWebResponse)req.GetResponse();
objCookieContainer = req.CookieContainer;
using(Stream resStream = res.GetResponseStream())
{
using(StreamReader sr = new StreamReader(resStream, Encoding.UTF8))
{
strResponse = sr.ReadToEnd();
}
}
}
catch(Exception ex)
{
strResponse = ex.ToString();
}
finally
{
if (res != null)
{
res.Close();
}
}
return strResponse;
}
cangwu_lee 2007-01-22
  • 打赏
  • 举报
回复
%20 属于 UrlEncode 方面

AJAX Post 的内容要这么做:

s+="&content="+escape(txtField1.value);



咔咔咔西西 2007-01-22
  • 打赏
  • 举报
回复
中文POST之前先进行UTF-8编码转化
yayx 2007-01-22
  • 打赏
  • 举报
回复
终于搞定了 LS的代码似乎也不能工作
HttpUtility.UrlEncode默认使用UTF-8编码的,但是传到网页上是ANSI编码

调用HttpUtility.UrlEncode时候需要指定 Encoding.Default

类似strtxt = HttpUtility.UrlEncode(strtxt, Encoding.Default);

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧