CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

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

楼主zt371(dudu)2003-12-04 18:58:39 在 .NET技术 / 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

相关问题

  • 如何设定浏览器的编码选择为简体HZ?
  • 怎样用C#做一个浏览器
  • c++ builder 怎么调用IE浏览器?
  • vb.net编码实现邮件接收
  • 有什么办法使浏览器的编码总是简体中文?
  • 如何用c++ builder 写一个浏览器?
  • C#如何制作简单的浏览器程序?
  • IE浏览器有个编码菜单,怎样把它放到自己程序中的菜单里?
  • 浏览器的编码无法默认为简体中文应该怎么办? IE5.0
  • 有没有办法在jsp里控制当前页面的浏览器显示编码?急!!!!!!!!!!!!

关键词

  • 编码
  • 中文
  • 转换
  • 信息
  • s1
  • 接收
  • 提交
  • encoding
  • byte
  • chars

得分解答快速导航

  • 帖主:zt371
  • tangyanjun1
  • xiaha3

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo