asp.net 页面通过URL传参中文乱码的三种解决方案

1.编码

string state=Server.UrlEncode(stateName.Text.Trim());
Response.Redirect("aaa.aspx?state="+state+"");

2.解码(aaa.aspx)

string state= Server.UrlDecode(Request.QueryString["state"].ToString());

是GB2312编码的,参数传值是UTF-8编码的

解决的方法一般有3种:

1.设置web.config文件

<system.web> 
...... 
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> 
...... 
</system.web>

2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。 
>> 进行传递

string Name = "中文参数"; 
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;

>> 进行接收

string Name = Request.QueryString["Name"]; 
Response.Write(Server.UrlDecode(Name)) ;

3.如果是从 .HTML 文件向 .Aspx 文件进行传递中文参数的话(即不从后台用 Redirect()方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。 
>> 进行传递

<script language="JavaScript"> 
function GoUrl() 

var Name = "中文参数"; 
location.href = "B.aspx?Name="+escape(Name) ; 

<body onclick="GoUrl()">

>> 进行接收

string Name = Request.QueryString["Name"]; 
Response.Write(Server.UrlDecode(Name)) ; 
总结:
一般来说。设置web.config文件就可以了。但是如果你用 JavaScript 调用 webservice 方法的话(往webservice里面传递中文参数)。设置 web.config 文件好象无效。 
或用

Response.Redirect("test1.aspx?111="+System.Web.HttpUtility.UrlEncode("中医药")) ; 
//建议使用最后如果是从其他的页面获取中文参数没有乱码,那就更简单了

string message ="http://localhost/Test/test1.aspx?111="+System.Web.HttpUtility.UrlEncode("中医药");

http:
//你要获取某个页面的返回值的地址"
//发送请求
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(message) ;
//接受请求
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse() ;
Stream receiveStream = myHttpWebResponse.GetResponseStream() ;
StreamReader readStream = new StreamReader(receiveStream, System.Text.Encoding.GetEncoding("GB2312")) ;
//此为要取页面的返回值输出的返回结果
returnValue = readStream.ReadToEnd();

时间: 2024-10-07 18:18:21

asp.net 页面通过URL传参中文乱码的三种解决方案的相关文章

Java URL传参中文乱码问题

我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题. URL传参所使用的编码为服务器中设置的编码,而ajax请求的编码为页面编码. 如果不设置tomcat的默认编码为ISO-8859-1,而如果在设置中加入 useBodyEncodingForURI="true" <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="

关于url传参中文乱码问题

之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/contest/get_teams_by_type_with_page?typeName=新材料 当在windows 跑 myeclipse的命令台  能正确打印出typeName的参数,而且持久层并没有问题. 当在 linux 跑catalina模式  打印出乱码,持久层也是乱码. 百度了好几个好几

get请求中url传参中文乱码问题--集锦

一:get请求url中带有中文参数,有三种方式进行处理防止中文乱码 1.如果使用tomcat作为服务器,那么修改tomcat配置文件conf/server.xml中,在  <Connector port="8082" protocol="HTTP/1.1"  中加入  URIEncoding="utf-8"的编码集 2.前台需要对中文参数进行编码,调用js方法encodeURI(url),将url编码,然后请求. 后台接受时,需处理Stri

URL传参中文乱码、点链接弹出子窗口

方法一: String ssdwhbm = new String(getRequest().getParameter("ssdwhbm").getBytes("iso8859-1"),"utf-8"); 方法二: <a href="javaScript:void(0)" onclick="paixu('${l.ssdwhbm}')" >排序</a> <script type=&

页面传参中文乱码解决方案

jsp页面传递参数到servlet,只要参数有中文就是乱码,大多数是??????乱码,尝试了网上比较普遍的好多种办法都不行,最后加了一句话解决掉,分享给大家. 1.打开tomcat安装目录 2.找到conf文件夹 3.打开里面的server.xml 4.找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

【WEB】jsp向servlet传参中文乱码问题解决

传参方式:POST.GET.link方式 servlet向jsp传中文参数msg 1 if(username.equals("") || password.euqals("")){ 2 msg = "用户名密码不能为空"; 3 String encodeMsg = java.net.URLEncoder.encode(msg, "GBK"); // URLEncoder参数进行转码,地址栏参数为16进制码 4 String u

window.location.href传参中文乱码问题

window.location.href="${pageContext.request.contextPath}/story/exportStoryInfo?domainId="+domainIds                                                +"&requirementName="+requirementName; 前端页面需求名称输入"4.19活动",传递到后台时出现中文乱码问题: 解

JS传参中文乱码问题.NET

前台js代码 window.location.href = "/product.aspx?id=2&title=" +encodeURIComponent(strtitle) 后台代码 title = HttpUtility.UrlDecode(title); 很简单这样就解决了中文乱码问题

python之函数的传参形参的第三种动态参数*args和**kwargs

1. 位置/关键字传参的缺点 当给函数传入的参数数目不定时,之前的传参方式解决不了问题. def eat(food1,food2,food3): print(f'我请你吃:{food1},{food2},{food3}') eat('蒸羊羔','蒸熊掌','蒸鹿尾') 万能参数,动态参数. *args def eat(food1,food2,food3): print(f'我请你吃:{food1},{food2},{food3}') eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企