asp.net URL 编码 :
//
// 摘要:
// 对字符串进行 URL 解码并返回已解码的字符串。
//
// 参数:
// s:
// 要解码的文本字符串。
//
// 返回结果:
// 已解码的文本。
public string UrlDecode(string s);
//
// 摘要:
// 对在 URL 中接收的 HTML 字符串进行解码,并将结果输出发送到 System.IO.TextWriter 输出流。
//
// 参数:
// s:
// 要解码的 HTML 字符串。
//
// output:
// System.IO.TextWriter 输出流,包含已解码的字符串。
public void UrlDecode(string s, TextWriter output);
//
// 摘要:
// 对字符串进行 URL 编码,并返回已编码的字符串。
//
// 参数:
// s:
// 要进行 URL 编码的文本。
//
// 返回结果:
// URL 编码的文本。
public string UrlEncode(string s);
//
// 摘要:
// 对字符串进行 URL 编码,并将结果输出发送到 System.IO.TextWriter 输出流。
//
// 参数:
// s:
// 要编码的文本字符串。
//
// output:
// System.IO.TextWriter 输出流,包含已编码的字符串。
public void UrlEncode(string s, TextWriter output);
//
// 摘要:
// 对 URL 字符串的路径部分进行 URL 编码,并返回已编码的字符串。
//
// 参数:
// s:
// 要进行 URL 编码的文本。
//
// 返回结果:
// URL 已编码的文本。
public string UrlPathEncode(string s);
//
// 摘要:
// 将 URL 字符串标记解码为使用 64 进制数字的等效字节数组。
//
// 参数:
// input:
// 要解码的 URL 字符串标记。
//
// 返回结果:
// 包含解码后的 URL 字符串标记的字节数组。
//
// 异常:
// System.ArgumentNullException:
// input 的值为 null。
关于javascript编码
javascript 中有三个关于编码的方法。作用和区别如下:
escape 方法
对 String 对象编码以便它们能在所有计算机上可读,
escape(charString)
必选项 charstring 参数是要编码的任意 String 对象或文字。
说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。
字符值大于 255 的以 %uxxxx 格式存储。
注意 escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。
encodeURI 方法(要求是ie 5.5以上的版本。)
将文本字符串编码为一个有效的统一资源标识符 (URI)。
encodeURI(URIString)
必选的 URIString 参数代表一个已编码的 URI。
说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent(encodedURIString)
必选的 encodedURIString 参数代表一个已编码的 URI 组件。
说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码
说明:后两个都是转换成utf-8的形式。
如果请求链接中参数有特殊的字符就要注意了。 ":"、"/"、";" 和 "?",由于encodeURI方法不对这些字符进行编码,如果参数里面有这些字符的时候就不能够用 encodeURI方法了。这种情况就要用encodeURIComponenet
方法进行编码了。但是只限于一个指定的参数,不能够把整个uri给它去转换。因为它会吧 "/" 和 “?”等字符编码。下面是一段Ajax 实现论坛的用户名检测的代码其中就用到了encodeURIComponenet 方法。
先简化了下 Ajax.js, 让它能在不同的程序里指定不同的 url, param 和 div 的 id.
var req, Div;
var debug = 0;
function Ajax(DivName, url, parameters) {
if (window.XMLHttpRequest) req = new XMLHttpRequest();
else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
else return; // fall on our sword
req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.setRequestHeader('Connection', 'close');
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.send(parameters);
Div = document.getElementById(DivName);
}
function processReqChange() {
// only if req shows "complete"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// show content in div
Div.innerHTML = req.responseText;
} else {
if (debug) alert('status is not 200,but ' + req.status);
}
}
}
调用的代码为:
<input type="text" maxlength="12" name="username" onblur="CheckName(this.value)"> * 2 - 12 字符(1 - 6 汉字)
<script language="javascript" type="text/javascript" src="./js/Ajax.js"></script>
<script language="javascript" type="text/javascript">
function CheckName(aObj) {
try { Ajax('CheckName', 'CheckName.pl', 'mode=Ajax&name=' + encodeURIComponent(aObj)); }
catch (e) { return; }
}
</script>
<div id="CheckName"></div>