一般有3种方法:

1.设置web.config文件

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 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。 
传递 
< type="JavaScript/text"> 
function GoUrl() 

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

接收 
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("中国"));  这样似乎挺好。

ASP.NET中Url中文处理相关问题

ASP.NET的中文乱码问题,归根结底都是因为使用编码方式不匹配造成的。因为常常需要通过URL字符串在不同页面间传递参数时遇到中文,必须进行编码和解码,否则传递的参数不正确。一般使用 Server.UrlEncode 和 Server.UrlDecode 就可以解决问题了,但是有时会遇到特殊情况:

需要设置如下的全局配置

以下参考某某作者,忘记了,不好意思

但是 requestEncoding="gb2312" 使得url传递的中文无法通过Server.UrlEncode 和 Server.UrlDecode 正确编码和解码,于是只好使用了自定义的编码和解码方案:

/// 
  /// 编码 
  ///

  static public string EnCodeBase64(string code_type,string code) 
  { 
   string encode = ""; 
   if(code_type == null) 
   { 
    code_type = "unicode"; 
   } 
   if(code != null && code.Length > 0) 
   { 
    byte[] bytes = System.Text.Encoding.GetEncoding(code_type).GetBytes(code); 
    try 
    { 
     encode = Convert.ToBase64String(bytes); 
    } 
    catch 
    { 
     //encode = code; 
    } 
   } 
   return encode; 
  } 
  /// 
  /// 解码 
  /// 
  static public string DeCodeBase64(string code_type,string code) 
  { 
   string decode = ""; 
   if(code_type == null) 
   { 
    code_type = "unicode"; 
   } 
   if(code != null && code.Length > 0) 
   { 
    try 
    { 
     decode = Encoding.GetEncoding(code_type).GetString(Convert.FromBase64String(code)); 
    } 
    catch(Exception ex) 
    { 
     //Console.Write(ex.Message); 
     //decode = code; 
    } 
   } 
   return decode; 
  }

这样中文可以变成Base64形式避免了被ASP.NET错误转换,但是实际运行后发现还有问题:就是Base64码中包含加号+经过ASP.NET传递后会将+变成空格,导致Base64字符串被破坏。于是考虑在经过EnCodeBase64编码后再次使用Server.UrlEncode 编码(同样进行与之匹配的解码),这样问题解决!虽然经过两次编码,效率很低,但是也是特殊情况。

来源:http://blog.sina.com.cn/s/blog_865810200100t8lw.html

[转]Asp.Net url中文乱码的更多相关文章

  1. 一种另类的解决URL中文乱码问题--对中文进行加密、解密处理

    情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标对工作目标进行两次编码(encodeURI(enco ...

  2. 解决URL中文乱码问题--对中文进行加密、解密处理

    解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...

  3. asp.net oracle 中文乱码 解决方法

    asp.net oracle 中文乱码 解决方法 不需要去修改oracle以及client的字符集,只需要在web.config中连接字符串上加上 Unicode=True 问题解决. <add ...

  4. ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用

    [摘要:百度编纂器1.43 gbk asp 题目 1.firefox3.0下 单图上传 面没有了 面多图上传 中央的蓝色按钮(即 面击挑选图片)没有表现(附件上传出那个题目) 没有晓得我的水狐吃翔了 ...

  5. java中文乱码解决之道(八)-----解决URL中文乱码问题

    我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不 ...

  6. URL中文乱码处理总结(转)

    转自:http://www.cnblogs.com/xirongliu/archive/2012/09/06/2674196.html 问题:传递中文参数的时候,接收页面出现乱码问题?当跨域操作,两套 ...

  7. URL中文乱码及特殊字符处理

    一.中文乱码 IE高版本(应该是9以上,不确定),在get方式请求中中文传到后台容易出现乱码问题.解决方法如下: 1.第一种,换成post方式 如果可以得话换成post方式就可以.如果采用表单或者aj ...

  8. 关于使用Tomcat搭建的Web项目,出现 URL 中文乱码的问题解析

    URL编码问题 问题描述 使用 Tomcat 开发一个 Java Web 项目的时候,相信大多数人都遇到过url出现中文乱码的情况,绝大多数人为了避免出现这种问题,所以设计 url 一般都会尽量设计成 ...

  9. 解决使用tomcat服务器发布web项目时出现URL中文乱码的问题

    打开Tomcat的安装路径 打开server.xml文件 在修改端口号的一行既是下图中位置添加 URIEncoding="UTF-8" 就能替换在用eclipse或者myeclip ...

随机推荐

  1. gradle -v不是外部命令, 内部命令,或批处理文件

    安装完gradle并且配置了环境变量之后,使用windos+R,cmd 进入Dos命令gradle -v检测版本号出现了: 1 --首先找到gradle文件所在目录 一般是在C:\Users\su\. ...

  2. Linux From Scratch(从零开始构建Linux系统,简称LFS)(二)

    七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统需求和符号链接 c. 对于每个软件包: (1). 确保解压软 ...

  3. thinkphp 手机号和用户名同时登录

    //在注册时用户名不能是纯数字, 防止一个人的用户名和另一个人的手机号相同public function Login(){ if (IS_AJAX) { $username = I('param.us ...

  4. flask用session记录状态

    html <form action="/login" method="POST"> <input type="text" ...

  5. jquery文本框textarea自适应高度

    浏览器中默认的文本框是不能根据内容的增多变高,只能固定高度有滚动条,体验不是很好,找了很多方法兼容都不行,总算找到个兼容良好的方法: <body> <textarea id=&quo ...

  6. Javascript 多物体运动1

    多物体运动 <!DOCTYPE html><html> <head>  <meta charset="UTF-8">  <ti ...

  7. 解决github访问过慢问题

    解决github访问过慢问题 主要原因: DNS 自动解析较慢 http://github.global.ssl.fastly.net.ipaddress.com/#ipinfo 用文本编辑器打开ho ...

  8. C#启动服务

    启动服务的方法有很多种,简单的cmd下dos命名,手动启动,还有C#代码启动. 我们要实现的功能: 判断是否安装 是否启动 启动服务 关闭服务 我封装了有关服务的代码,如下: using System ...

  9. 【Leetcode】【Medium】Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  10. YII2.0安装教程,数据库配置前后台 [ 2.0 版本 ]

    1.首先下载yii-advanced-app-2.0.6.tgz 2.解压到D:\wamp\www\yii2目录下面将目录advanced下所有文件剪切到 D:\wamp\www\yii2 3.打开c ...