url 编码

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) 进行编码。对其编码应使用 encodeURIencodeURIComponent 方法。


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>

### URL编码的使用方法及规则 URL编码(Percent-Encoding)是一种用于在URL中传输特殊字符的编码方式。由于URL只能使用有限的字符集(主要是ASCII字符),而实际应用中可能包含许多特殊字符(如空格、中文字符、标点符号等),URL编码通过将这些特殊字符转换为可传输的格式,确保了URL的正确性和安全性[^1]。 #### 编码规则 URL编码遵循以下规则: 1. 非字母数字字符会被替换为 `%` 后跟两个表示字符ASCII值的十六进制数字。例如,空格会被编码为 `%20`。 2. 某些保留字符(如 `&`, `=`, `?` 等)即使属于ASCII字符集,也会被编码以避免歧义。例如,`&` 会被编码为 `%26`。 3. 对于非ASCII字符(如中文字符),通常先将其转换为UTF-8字节序列,然后对每个字节进行百分号编码。例如,中文字符“你好”在UTF-8编码下会被转换为 `%E4%BD%A0%E5%A5%BD`[^2]。 #### 使用方法 URL编码广泛应用于以下场景: 1. **URI/URL**:当需要在URL中传递参数时,所有特殊字符都需要进行URL编码[^3]。 2. **表单提交**:当浏览器提交表单时,会根据请求体格式 `application/x-www-form-urlencoded` 对表单数据进行编码。具体规则如下: - 每对 `name/value` 参数由 `&` 符号分隔。 - 每个 `name` 和对应的 `value` 由 `=` 符号分隔。 - 如果用户没有输入值给某个 `name`,则该 `name` 仍会出现,但无值[^4]。 #### 示例代码 以下是一个简单的Python示例,展示如何对字符串进行URL编码: ```python import urllib.parse # 原始字符串 original_string = "Hello, 你好! This is a test." # 使用urllib库进行URL编码 encoded_string = urllib.parse.quote(original_string) print("原始字符串:", original_string) print("URL编码后的字符串:", encoded_string) ``` 运行结果: ``` 原始字符串: Hello, 你好! This is a test. URL编码后的字符串: Hello%2C+%E4%BD%A0%E5%A5%BD%21+This+is+a+test. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值