当前位置: 首页 > article >正文

【工作笔记0010】asp.net后台Request.QueryString获取的url中文参数乱码解决方案

通常页面前端向后台传递参数有两种方法:

1.表单提交。

采用form标签,将需要提交的内容放到form标签里面,

后台用string str = Request.Form["标签名字"].ToString();接收即可。

采用这种方式获取到的含有中文的字符串一般不会出现乱码的情况,

只需要页面中设置的字符编码和后台配置文件中设置的字符编码一致即可。

2.以url形式get或post请求。

这种情况多是用在只需要提交少量数据到后台验证或请求数据,但只要url中参数带有中文,就很可能会出现后台以Request.QueryString["参数名"].ToString();形式获取的中文乱码究其原因就是该url传到后台之前会重新编码,若传到后台后没有按照原来页面设置的编码格式解码回来的话就会出现获取到的中文参数乱码

下面给出一个例子来解决这种情况。

例如提交 用户名 到后台验证该用户名是否存在,这时可以利用jQuery的ajax函数向后台提交请求,示例代码如下:

前端重要代码:

$.ajax({type: 'post',dataType: 'text',url: "/xxxx.aspx?act=test&username=" + encodeURI('这是用户名'),success: function(data) {if(data == 'y')alert("验证成功!");elsealert("验证失败!");},error: function() {alert("验证失败!");}});  </span></span>

提示:上述url中act=test表示该行为是验证用户名,encodeURL函数是将username字符串作为 URI 进行编码,此函数是必需的。

后台重要代码:

Type type = Request.GetType();
PropertyInfo property = type.GetProperty("QueryStringBytes",
BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.NonPublic);
byte[] queryBytes = (byte[])property.GetValue(Request, null);
string queryString = HttpUtility.UrlDecode(queryBytes, Encoding.UTF8);//获取中文参数采用UTF8编码就可以了

提示:

上述代码目的是将获取到的请求原始数据重新编码,以方便获取到 中文 参数。

最后queryString 中获取到的字符串是 act=test&username=这是用户名,至于提取出username=后面的字符串就可以直接用: string note = queryString.Substring(queryString.IndexOf("username=") + 9);此时note为"这是用户名"。


上述代码使用前需要先引用一下两个类库:

using System.Text;
using System.Reflection;</span></span>

最后,希望看到这篇文章的你能够成功解决遇到的问题,博主也是最近刚遇到这个问题,所以就写了这篇博文以记录一下。上述代码均为自己编写,可直接复制到程序使用,欢迎交流!


http://www.lryc.cn/news/2418908.html

相关文章:

  • UART简介
  • C语言:从零基础到精通—轻松写出第一个C语言程序
  • Xtreme.Toolkit.Pro
  • _Linux结束进程到底有多少种方法?
  • windows密码抓取的多种方法
  • OSIP协议栈(及eXoSIP,Ortp等)使用入门(2)
  • 电路方案分析(七)电源入口欠压保护(阈值设定电路)
  • API::CreateProcess()创建进程失败 返回1
  • 企业网站建设需要多少钱?定制开发费用报价在3000-4000元
  • 什么是线程和应用?线程和进程区别是什么?
  • 软件性能测试怎么做?有哪些常见的技术指标?
  • Python接口测试实战- 接口测试理论
  • Android组织首选项PreferenceScreen及首选项框架 ListPreference
  • http://www.51voa.com/VOA_Special_English/
  • 使用VMware安装Ubuntu虚拟机和VMware Tools
  • 09 内核开发-避免冲突和死锁-spinlock
  • ioctl函数详细说明
  • input标签的各种属性
  • PostgreSQL数据库事务系统——获取事务ID
  • Delphi各个版本的官方下载地址
  • 设计师创业的几种低成本思路
  • “lnk是什么文件 编程“ -> “在编程中,lnk文件的作用和特点“
  • (6)脱壳
  • 朋友圈(拉姆齐定理)- HDU 6152
  • ***工具大全
  • Verilog复杂逻辑设计指南-奇偶校验生成器和校验器及筒式移位器
  • 太吾绘卷第一世攻略_中国文学史上的各种类别的“第一”(史书类)
  • MyEclipse6.5下载地址(含注册码)
  • 论通才与专才
  • 同一Linux下安装两个版本的MySQL(转载)