POST XML 文件到页面,为什么C#要用UTF-8读取,而ASP要用GB2312读取?
evlon 2005-08-08 05:14:29 default.aspx
----------------------
private void Page_Load(object sender, System.EventArgs e)
{
string url1 = "http://localhost/Test.asp";
string url2 = "http://localhost/Test.aspx";
string data =
@"<?xml version=""1.0""?>
<params>
<action>createService</action>
<paramT>中国</paramT>
</params>
";
string strRet = PostXmlToUrl(url1,data);
Response.Write(strRet);
string strRet = PostXmlToUrl(url2,data);
Response.Write(strRet);
Response.End();
}
protected string PostXmlToUrl(string url,string data)
{
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
hwr.Method = "POST";
Stream stream = hwr.GetRequestStream();
StreamWriter sw = new StreamWriter(stream,System.Text.Encoding.UTF8);
sw.Write(data);
sw.Close();
stream = hwr.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream,System.Text.Encoding.UTF8);
string ret = sr.ReadToEnd();
sr.Close();
return ret;
}
===================
test.aspx
------------------------------
private void Page_Load(object sender, System.EventArgs e)
{
byte[] buf = Request.BinaryRead(Request.ContentLength);
string str = System.Text.Encoding.GetEncoding("utf-8").GetString(buf);
Response.Write(str);
Response.End();
}
===========================================
test.asp
----------------------------------
<%
dim buf ,str
dim ms
buf = Request.binaryRead(Request.TotalBytes)
str = Bytes2bStr(buf)
Response.Write(str)
Response.End()
'' Byte流到Char流的转换函数
'' Code By:evlon
'' 参考:忘记了
Function Bytes2BSTR(vin)
Dim ms,strRet
Set ms = Server.CreateObject("ADODB.Stream") '建立流对象
ms.Open '默认 adTypeText
ms.WriteText vin '把vin写入流对象中
ms.Position = 0 '设置流对象的起始位置是0 以设置Charset属性
ms.Charset = "gb2312" '设置流对象的编码方式为GB2312
ms.Position = 1 '设置流对象的起始位置是1 不知道为什么是1,如果是0,则前面有?出现
strRet = ms.ReadText '取字符流
ms.close '关闭流对象
Set ms = nothing
Bytes2bStr = strRet
End Function
%>
================================================================
注意
ms.Charset = "gb2312" 为什么?