none
关于MVC 默认把url 参数解码问题 RRS feed

  • 问题

  •  问题描述:有两个项目,一个项目里调用另一个项目的一个页面,也就是一个Action,那在第一个项目传了几个参数,但是参数都是url的GB2312编码,请求另一个mvc 项目,那mvc项目里有个实体对应这些传过来的参数如传过来name,那么接收参数也是name那么mvc会自动赋值,但是传过来的name是 gb2312编码,而mvc默认用utf-8解码,调试时查看name值直接就是乱码,这个问题怎么解决,怎么能改mvc默认编码?怎么能兼容gb2312与utf-8两种编码?,网上很多人说用HttpUtility.UrlDecode(),什么的,主要第一步接收就是乱码,还没到用这个解码方法的时刻就已经乱码了。现在有个方法可以,但觉得此方法不合适就只在web.config中加节点<globalization /> 设置一种编码,但是如设置gb2312,那么如果在有第三方用的是utf-8编码来掉这个页面,那该怎么弄呢?帮忙解答下,谢谢。
    2015年1月7日 13:16

全部回复

  •  问题描述:有两个项目,一个项目里调用另一个项目的一个页面,也就是一个Action,那在第一个项目传了几个参数,但是参数都是url的GB2312编码,请求另一个mvc 项目,那mvc项目里有个实体对应这些传过来的参数如传过来name,那么接收参数也是name那么mvc会自动赋值,但是传过来的name是 gb2312编码,而mvc默认用utf-8解码,调试时查看name值直接就是乱码,这个问题怎么解决,怎么能改mvc默认编码?怎么能兼容gb2312与utf-8两种编码?,网上很多人说用HttpUtility.UrlDecode(),什么的,主要第一步接收就是乱码,还没到用这个解码方法的时刻就已经乱码了。现在有个方法可以,但觉得此方法不合适就只在web.config中加节点<globalization /> 设置一种编码,但是如设置gb2312,那么如果在有第三方用的是utf-8编码来掉这个页面,那该怎么弄呢?帮忙解答下,谢谢。
    • 已合并 Caillen 2015年1月8日 5:23 duplicate
    2015年1月7日 13:17
  • 你好,

    请问你尝试用过第三方utf-8编码来调用该页面吗?

    如果说客户端强制使用utf-8编码,而服务器端是gb2312编码,那么肯定会是乱码的。

    2015年1月8日 5:19
  • 有两个项目,一个项目里调用另一个项目的一个页面,也就是一个Action,那在第一个项目传了几个参数,但是参数都是url的GB2312编码,请求另一个mvc 项目,那mvc项目里有个实体对应这些传过来的参数如传过来name,那么接收参数也是name那么mvc会自动赋值,但是传过来的name是 gb2312编码,而mvc默认用utf-8解码,调试时查看name值直接就是乱码

    你好:

    能说明一下你是如何在一个MVC项目中调用另外一个MVC项目的Action的吗?为什么要在第一个项目中传递GB2312编码的key到另外一个项目的Action呢?

    两个web应用程序之间传递数据的话建议使用webservice,WCF等来进行通信,传递的数据使用统一的编码格式。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月8日 5:21
  • 客户端用Server.UrlEncode("字符串")编码 ,另一个mvc项目没有解码,是mvc自动给解码的,就出现乱码了
    2015年1月9日 5:41
  • 调用另一mvc项目是为了异步写数据,不需要返回数据,传数据当然要编一下码了
    2015年1月9日 5:45
  • 今天遇见问题更奇葩了,客户端用Server.UrlEncode("字符串")编码 编码,服务器端web.config加入  <!--<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />-->IE和Chrome浏览器访问是好的,FireFox访问还是乱码,乱码是我调试时查到的,就是在Action代码第一行 如  this.UpdateModel<DefaultPrickIn>(model); model里的一个属性,也就是传过来的数据,就乱码了,根本没有认为解码。

    2015年1月9日 5:52