asp.net URL传递中文参数System.Web.HttpUtility.UrlEncode与Server.UrlEncode的区别
asp.net URL传递中文参数System.Web.HttpUtility.UrlEncode与Server.UrlEncode的区别(一)
HttpUtility.UrlEncode 方法:
对 URL 字符串进行编码,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输。
重载列表
将字节数组转换为已编码的 URL 字符串,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输。
[C#] public static string UrlEncode(byte[]);
对 URL 字符串进行编码,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输。
[C#] public static string UrlEncode(string);
使用指定的编码对象对 URL 字符串进行编码,以便实现从 Web 服务器到客户端的可靠 HTTP 传输。
[C#] public static string UrlEncode(string, Encoding);
从数组中的指定位置开始一直到指定的字节数为止,将字节数组转换为 URL 编码的字符串,以便实现从 Web 服务器到客户端的可靠的 HTTP 传输。
[C#] public static string UrlEncode(byte[], int, int);
HttpUtility.UrlDecode 方法:
将已经为在 URL 中传输而编码的字符串转换为解码的字符串。
重载列表
将已经为在 URL 中传输而编码的字符串转换为解码的字符串。
[C#] public static string UrlDecode(string);
使用指定的解码对象将 URL 编码的字节数组转换为已解码的字符串。
[C#] public static string UrlDecode(byte[], Encoding);
使用指定的编码对象将 URL 编码的字符串转换为已解码的字符串。
[C#] public static string UrlDecode(string, Encoding);
使用指定的编码对象,从数组中的指定位置开始到指定的字节数为止,将 URL 编码的字节数组转换为已解码的字符串。
[C#] public static string UrlDecode(byte[], int, int, Encoding);
Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
HttpServerUtility.UrlEncode 方法:
编码字符串,以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。
重载列表
对字符串进行 URL 编码,并返回已编码的字符串。
[C#] public string UrlEncode(string);
URL 对字符串进行编码,并将结果输出发送到 TextWriter 输出流。
[C#] public void UrlEncode(string, TextWriter);
例:
String TestString = "This is a <Test String>.";
StringWriter writer = new StringWriter();
Server.UrlEncode(TestString, writer);
String EncodedString = writer.ToString();
HttpServerUtility.UrlDecode 方法:
对字符串进行解码,该字符串为了进行 HTTP 传输而进行编码并在 URL 中发送到服务器。
重载列表
对字符串进行 URL 解码并返回已解码的字符串。
[C#] public string UrlDecode(string);
对在 URL 中接收的 HTML 字符串进行解码,并将结果输出发送到 TextWriter 输出流。
[C#] public void UrlDecode(string, TextWriter);
需要注意的几点:
1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。
2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
3、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样:
例如:
string url="http://search.99read.com/index.aspx?book_search=all&main_str=奥迷尔";
Response.Write(HttpUtility.UrlEncode(url));
Response.Write("<br>");
Response.Write(Server.UrlEncode(url));
输出结果是:
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%e5%a5%a5%e8%bf%b7%e5%b0%94
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
原因:Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。
如果改一下程序:
string url1="http://search.99read.com/index.aspx?book_search=all&main_str=奥迷尔";
Response.Write(HttpUtility.UrlEncode(url1,System.Text.Encoding.GetEncoding("GB2312")));
Response.Write("<br>");
Response.Write(Server.UrlEncode(url1));
输出的结果是:
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
4、有时候可能别的系统传递过来的url是用别的编码方式编码的。
介绍自己编写的一个方法,可以获取指定编码格式的QueryString。
public string GetNonNullQueryString(string key,Encoding encoding)
{
//引用System.Collections.Specialized和System.Text命名空间
string stringValue;
System.Collections.Specialized.NameValueCollection encodingQueryString;
//该方法是在2.0中新增的
encodingQueryString = HttpUtility.ParseQueryString(Request.Url.Query,encoding);
//'里面的key就是你提交的参数的Key
return encodingQueryString[key] != null ? encodingQueryString[key].Trim() : "";
}
调用:
string url = GetNonNullQueryString("url",Encoding.UTF8).Trim();
(二)http://blog.163.com/lishilin_468@126/blog/static/1629011382012818103120165/
原文引自http://blog.163.com/lishilin_468@126/blog/static/1629011382012818103239768/,转载注明出处!
asp.net URL传递中文参数System.Web.HttpUtility.UrlEncode与Server.UrlEncode的区别的更多相关文章
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode
最近网站里的参数包括中文的例如: http://www.taiba/Tag%b0%ae%c7%e9.html 已开始使用 Server.UrlEncode来做的,但发现,有一些中文在url重写的是说找 ...
- url 传递中文参数乱码问题的终极解决方法。
估计很多人在做web开发的时候,都会碰到过url传递中文参数,有时候会出现乱码的问题,但有些项目或者环境,又不会有问题.当遇到乱码的时候,上网找了很多解决方案,比如: 页面设置它的编码方式,改成utf ...
- 通过URL传递中文参数的乱码处理
环境:web.xml中配置了 <filter> <filter-name>encodingFilter</filter-name> <filter-class ...
- URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致(两种解决方法)
下午,计划2个小时搞定,个人官网第6次升级,就可以干点轻松的事了,结果,下午多搞了2个小时,晚上又搞了2个小时,才搞定. 最后一个世界难题是,URL传递中文参数. 问题大致是这么出现的:我为" ...
- 关于JAVA中URL传递中文参数的问题
今天在调用一个接口时,需要传递一个中文参数,结果获取不到数据,原因就在于中文传参的编码问题. 问题来源:URL url= new URL("http://XXX?OrganName=司法厅& ...
- Java中url传递中文参数取值乱码的解决方法
java中URL参数中有中文值,传到服务端,在用request.getParameter()方法,得到的常常会是乱码,这将涉及到字符解码操作. 方法一: http://xxx.do?ptname=’我 ...
- JS中的的Url传递中文参数乱码,如何获取Url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码:<script type=”text/javascript” ...
- asp.net——地址栏传递中文参数乱码解决方案
地址栏传递中文参数乱码解决方案: 很多人在使用地址栏传递参数的时候都会遇到一个麻烦的问题(参数为中文时乱码了),那要怎么解决呢? 其实解决这个问题也不怎么难,无非就是给要传递的中文参数一个编码解码的过 ...
- URL传递中文参数乱码问题
web项目开发中,经常遇到中文参数乱码问题,而且有时候明明测试服务器上好用,换个正式环境就不用的情况也经常出现,今天做一个记录,防止自己以后忘记 1.地址栏url请求带中文参数 这类
随机推荐
- 复习MySQL③导入数据、检查及修改
导入数据: 用insert into语句为表插入数据: - insert into 表名(字段1,字段2,…) values …… 导入外部文本文件: - 导入外部txt文件(导入CSV文件分隔符为' ...
- Labview学习笔记(二)
一.编程基础 LABVIEW程序成为虚拟.仪器程序,简称VI,一个最基本的VI包括三个部分:前面板.程序框图和图标/连接端口. 1.前面板 在前面板窗口中,可以添加输入控件和显示控件,同时,可以用快捷 ...
- Hibernate事务管理-HibernateTransactionManager-对hibernate session的管理
由于对SSH还停留在比较初级的应用水平上,今天在遇到一个疑惑时折腾了很久,具体问题是这样的, 有这么一个测试方法, public static void test1() { ApplicationCo ...
- Optimization on content service with local search in cloud of clouds
曾老师的这篇文章发表于Journal of Network and Computer Applications,主要解决的是利用启发式算法决定如何在cloud of clouds中进行副本分发,满足用 ...
- 继续过Hard题目
接上一篇:http://www.cnblogs.com/charlesblc/p/6283064.html 继续过Hard模式的题目吧. # Title Editorial Acceptance ...
- HDU 2717
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- S 禁止F12和右键操作控制台,兼容各浏览器
document.oncontextmenu = function () { return false; }; document.onkeydown = function () { ...
- 黑马day01xml 解析方式与原理分析
dom解析方式和sax解析
- Bootstrap的js插件之警告框(alert.js)
data-dismiss="alert"--为关闭button加入该属性能够使其自己主动为警告框赋予关闭功能. .fade .in--为警告框在关闭时加入动画效果. 很多其它细节參 ...
- spring 源码解析
1. [文件] spring源码.txt ~ 15B 下载(167) ? 1 springн┤┬вио╬Ш: 2. [文件] spring源码分析之AOP.txt ~ 15KB 下载( ...