一 参考书
0 http://hi.baidu.com/suofang/item/970a2ba6ea271cda5bf191ea
1 js编码http://blog.csdn.net/cnartstorm/archive/2009/06/23/4292460.aspx
2 js 解决中文乱码函数-js中escape,encodeURI,encodeURIComponent三个函数的区别
http://blog.csdn.net/renhui15688/archive/2009/01/06/3710569.aspx
二 各函数说明
js对文字进行url编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
A: escape(String)
escape函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明:方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。提示和注释
提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。
注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
B:encodeURI(string)
定义:把字符串作为 URI 进行编码
返回值: URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明: 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
提示和注释: 提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
C:encodeURIComponent
返回值:URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
提示和注释:
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此
encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号.
三 示例
工程,JSP页面编码使用UTF-8时,用js中的方法escape('中')进行编码,在java中要用EscapeUnescape.java进行解码,见附件,另外上传了,html,css3,W3school文档及编码的js文件,JS编码.zip
-
JS编码比较.zip (16.2 KB)
- 下载次数: 8
public static String escape(String src) {
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
分享到:
相关推荐
常见的三种编码方法是`escape`、`encodeURI`和`encodeURIComponent`。这些函数各有其特定的用途,理解和掌握它们的区别对于编写健壮的JavaScript代码至关重要。 1. `escape` 函数: `escape`方法主要用于对字符串...
### URL的三个JS编码函数:`escape()`, `encodeURI()`, `encodeURIComponent()` 简介 在Web开发中,经常遇到的一个问题是URL传递中文字符时出现乱码的情况。为了解决这一问题,JavaScript提供了几种不同的编码方法...
在Java开发中,遇到中文乱码问题是一种常见的挑战,特别是在处理URL时。URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要...
本文将详细介绍`escape()`、`encodeURI()`和`encodeURIComponent()`这三个函数,并解释它们的区别和使用场景。 首先,`escape()`方法是JavaScript最早提供的一个编码函数,它基于ISO Latin字符集对字符串进行编码。...
2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...
- **Unicode字符的编码方式**:`encodeURIComponent()`比`encodeURI()`对Unicode字符的处理更全面,可以编码更多的Unicode字符。 - **适用场合不同**:`encodeURIComponent()`常用于编码URL查询参数,`encodeURI()`...
UTF-8是一种可变长度的Unicode字符编码方式,它能兼容ASCII并支持世界上几乎所有的字符集。在Web开发中,UTF-8是最常用的字符编码之一,因为它可以高效地存储和传输多语言文本。 ### 2. URL编码与解码 URL编码(也...
编码和解码操作主要涉及三对函数:escape与unescape、encodeURI与decodeURI、encodeURIComponent与decodeURIComponent。下面详细解释每一对函数的功能及使用场景。 1. escape函数与unescape函数 escape函数用于对...
该函数同样遵循URL编码的标准,并且支持自定义编码方式。 #### 4. 实际应用场景与示例 假设我们需要通过URL传递一个包含特殊字符“#”的参数,如`...
JavaScript(简称JS)是一种广泛用于前端开发的轻量级脚本语言,它处理字符串时经常需要进行Unicode编码和解码。Unicode是一种国际标准,旨在表示世界上几乎所有的字符和符号,确保在不同系统间数据的兼容性。在JS中...
`escape()`方法将所有非ASCII码的字符进行转码,但是它并不编码URI的特殊字符,且对中文字符的编码方式与其他两个方法不同。 总结来说,选择合适的方法进行字符串编码取决于你的具体需求。如果需要编码整个URI,...
`encodeURI`函数是一种更为通用的编码方式,它提供了比`escape`更广泛的字符编码支持。`encodeURI`函数不会对ASCII字母、数字、`- _ ! # $ & ' ( ) * + , - . / : ; = ? @ ~`这82个字符进行编码,但是会将其它非英语...
- `escape()`: 使用16进制序列对字符串进行编码,现已不推荐使用,但对于编码cookie中的非法字符仍有其用处。 - `unescape()`: 解码由`escape()`方法编码的字符串。 编码方法的选择取决于具体的应用场景。一般情况...
在JavaScript中,有三种主要的函数可以完成URL的编码和解码操作:escape(), encodeURI(), 和encodeURIComponent()。 escape() 函数是最古老的一种编码方式,尽管现在不推荐使用,但由于历史原因仍在一些地方使用。...