• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#接收浏览器信息的中文编码问题

zt371 2003-12-04 06:58:39
这两天自己写了个web的服务器端,用来接收页面提交的信息。
但不知道怎样把提交的中文的编码信息如%B2%E2%CA%D4转换过来。
还请指教。
...全文
71 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
NetAnt007 2003-12-04
帮你up
回复
cnicq 2003-12-04
一起学习
回复
xiaha3 2003-12-04
呵呵,
回复
zt371 2003-12-04
在论坛里找到了答案。下面得是引用 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 ();
}
回复
zt371 2003-12-04
非常感谢,但是上面的办法都不行。可能我没有表达清楚。
得到%B2%E2%CA%D4证明编码是没有错误的,页面向程序提交的时候会把中文转换成这种格式以在网上传播。现在的问题是如何能将这编码再转回中文。
这个编码的中文是"测试"两个字。
回复
elite2018 2003-12-04
System.Text.encoding.default.GetBytes(yourstring);
回复
tangyanjun1 2003-12-04
一般用byte[]进行转换
string strOld = "unicode的字符串";
byte[] bytes = System.Text.encoding.default.GetBytes(strold);
string strNew = System.Text.Encoding.GetEncoding("gb2312").getString(bytes);
回复
gOODiDEA 2003-12-04
带有中文的参数用System.Web.HttpUtility.UrlEncode()编码,接收时直接Request

如:

xxx.aspx?id=System.Web.HttpUtility.UrlEncode("中国");

则可以在xxx.aspx中:

Request["id"]
回复
Edifier0709 2003-12-04
UP......
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2003-12-04 06:58
社区公告

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