ASP.NET中Request.Form中文乱码的解决方法

 更新时间:2011年03月28日 22:26:09   作者:  
一直以为,只有 Request.QueryString 接收url查询字符串含中文时可能会乱码(做好编解码工作,很容易可以避免),碰到的时候,才知道 Request.Form 接收表单的值中含中文也会乱码,以前真是很傻很天真很无知。
背景

涉及到两个网站的通信,网站A有一页面a,用提交表单的方式,传值到网站B的页面b。网站A统一用UTF-8编码,网站B统一用GB2312编码。

web.config中编码的设置
网站A:<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
网站B:<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
解决

网上搜索的结果,无非都是修改 web.config 文件的requestEncoding、responseEncoding之类的,这对我来说,纯属馊主意。加之网络疯狂地复制、粘贴、未验证可行性等行为,一直令我发指,直接导致搜索结果千篇一律,找到的都是那几篇文章,最气愤的是其中的内容还是错误的。所以本人一直坚持,遇到的问题,确实验证了可行,才在博客贴出,以免误人误己。(希望没扯得太远)

那就自己动动脑吧,稍微梳理下,其实这个过程很简单,就是一个UTF-8的页面发送数据到GB2312的页面,由于编码不同,出现乱码很正常,解决方法自然是统一编码。

网页的编码,一是接收请求数据(requestEncoding)的编码,一是发送响应(responseEncoding)的编码。只要让a页面发送响应的编码,b页面接收请求的编码一致,即可解决乱码问题。

代码只有一句,在a页面Page_Load方法中加入 Response.ContentEncoding = Encoding.GetEncoding("gb2312"); 即可。
复制代码 代码如下:

// 设置a页面响应编码为gb2312,保证与b页面接收请求的编码一致
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
}

可能你会有意见,说,反过来设置b页面接收请求的编码与a页面发送响应的一致,行不行呢。我试过了,不行,代码见下,如果你知道其中原理,烦请告知,不胜感激!
复制代码 代码如下:

// 设置b页面接收请求的编码为utf-8,保证与a页面响应编码一致,但行不通,为何??
protected void Page_Load(object sender, EventArgs e)
{
Request.ContentEncoding = Encoding.GetEncoding("utf-8");
}

相关文章

  • 轻量级ORM框架Dapper应用之实现DTO

    轻量级ORM框架Dapper应用之实现DTO

    本文详细讲解了使用Dapper实现DTO的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • ASP.NET的实用技巧详细介绍

    ASP.NET的实用技巧详细介绍

    本文介绍的是ASP.NET的实用技巧,从跟踪页面,表单数据的服务器端验证和跳过表单验证等方面为大家介绍的。希望对你有帮助,一起来看。
    2015-10-10
  • Datalist控件使用存储过程来分页实现代码

    Datalist控件使用存储过程来分页实现代码

    .net使用过程中,数据多的时候需要分页,本文将介绍如何使用存储过程来分页,需要的朋友可以了解下
    2012-12-12
  • asp.net 序列化and反序列化演示

    asp.net 序列化and反序列化演示

    实质上序列化机制是将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流写到磁盘文件或任何其他流化目标上。而要想实际的写出这个流,就要使用那些实现了IFormatter接口的类里的Serialize和Deserialize方法。
    2008-10-10
  • ASP.NET Core 6.0 添加 JWT 认证和授权功能

    ASP.NET Core 6.0 添加 JWT 认证和授权功能

    这篇文章主要介绍了ASP.NET Core 6.0 添加 JWT 认证和授权,本文将分别介绍 Authentication(认证) 和 Authorization(授权),通过实例代码分别介绍了这两个功能,需要的朋友可以参考下
    2022-04-04
  • Entity Framework管理并发

    Entity Framework管理并发

    这篇文章介绍了Entity Framework管理实现并发的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • asp.net伪静态配置备忘

    asp.net伪静态配置备忘

    我在访问一个网站的时候,总是习惯性的先查看打开的网站url,如果发现有类似&符号,心里就会产生一种比较别扭的感觉,这也许和我以前利用这种方式破解网站而养成的习惯有关吧。
    2010-11-11
  • MVC数据验证详解

    MVC数据验证详解

    这篇文章主要为大家详细介绍了MVC数据验证的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • asp.net下常用的加密算法MD5、SHA-1应用代码

    asp.net下常用的加密算法MD5、SHA-1应用代码

    在进行软件开发的过程中,为了提高系统的安全性能,经常需要进行敏感信息的加密处理。特别是在密码储存、文件传输、页面传值等方面,对信息进行加密显得十分必要。下面介绍我们常用的两种加密算法MD5、SHA1。
    2008-09-09
  • .NET Core类库项目中读取appsettings.json配置的方法

    .NET Core类库项目中读取appsettings.json配置的方法

    ASP.NET Core是一个全新的Web开发平台,微软在它上面构建了MVC、SingalR、GRPC、Orleans这样广泛使用的Web框架,今天通过本文给大家详细介绍下.NET Core读取appsettings.json配置的方法,感兴趣的朋友一起看看吧
    2022-03-03

最新评论