C#接收浏览器信息的中文编码问题
这两天自己写了个web的服务器端,用来接收页面提交的信息。
但不知道怎样把提交的中文的编码信息如%B2%E2%CA%D4转换过来。
还请指教。
问题点数:100、回复次数:9Top
1 楼Edifier0709(腦袋重構中.....)回复于 2003-12-04 19:02:49 得分 0
UP......Top
2 楼gOODiDEA(无语)回复于 2003-12-04 19:07:53 得分 0
带有中文的参数用System.Web.HttpUtility.UrlEncode()编码,接收时直接Request
如:
xxx.aspx?id=System.Web.HttpUtility.UrlEncode("中国");
则可以在xxx.aspx中:
Request["id"]Top
3 楼tangyanjun1(唐延军)回复于 2003-12-04 19:27:56 得分 10
一般用byte[]进行转换
string strOld = "unicode的字符串";
byte[] bytes = System.Text.encoding.default.GetBytes(strold);
string strNew = System.Text.Encoding.GetEncoding("gb2312").getString(bytes);Top
4 楼redbb(....DB & DEV....抵制日货,人人有责...)回复于 2003-12-04 20:00:54 得分 0
System.Text.encoding.default.GetBytes(yourstring);
Top
5 楼zt371(dudu)回复于 2003-12-04 21:03:08 得分 0
非常感谢,但是上面的办法都不行。可能我没有表达清楚。
得到%B2%E2%CA%D4证明编码是没有错误的,页面向程序提交的时候会把中文转换成这种格式以在网上传播。现在的问题是如何能将这编码再转回中文。
这个编码的中文是"测试"两个字。Top
6 楼zt371(dudu)回复于 2003-12-04 22:12:45 得分 0
在论坛里找到了答案。下面得是引用 xiaha3(夏) 的代码。
public string check(string s1)
{
Encoding enc = Encoding.GetEncoding("GB2312");
char c,d;
byte a=0,b=0;
byte[] bytes=new byte[s1.Length /2];
char[] chars=new char[s1.Length];
char[] chars1=s1.ToCharArray ();
for(int i=0 ;i<chars1.Length ;i=i+2)
{c=chars1[i];
d=chars1[i+1];
switch( c)
{
case 'A':
a=(byte)10;
break;
case 'B':
a=(byte)11;
break;
case 'C':
a=(byte)12;
break;
case 'D':
a=(byte)13;
break;
case 'E':
a=(byte)14;
break;
case 'F':
a=(byte)15;
break;
default:
a=byte.Parse(chars1[i].ToString ());
break;
}
switch(d)
{
case 'A':
b=(byte)10;
break;
case 'B':
b=(byte)11;
break;
case 'C':
b=(byte)12;
break;
case 'D':
b=(byte)13;
break;
case 'E':
b=(byte)14;
break;
case 'F':
b=(byte)15;
break;
default:
b=byte.Parse (chars1[i+1].ToString ());
break;
}
bytes[i/2]=(byte)(a*16+b);
}
string s=enc.GetString(bytes);
int co=s.Length ;
return s.ToString ();
}
Top
7 楼xiaha3(夏)回复于 2003-12-04 22:53:06 得分 90
呵呵,Top
8 楼cnicq(why not?)回复于 2003-12-04 23:08:10 得分 0
一起学习Top
9 楼NetAnt007(飞呀飞)回复于 2003-12-04 23:34:38 得分 0
帮你upTop




