湖南省邵阳建设局网站,百度导航地图下载,深圳网站建设公司好,网站备案流程详细一、Javascript里三种编码方式 js对文字进行编码涉及3个函数#xff1a;escape,encodeURI,encodeURIComponent#xff0c; 相应3个解码函数#xff1a;unescape,decodeURI,d ecodeURIComponent 1、 传递参数时需要使用encodeURIComponent#xff0c;这样组合的url才不会… 一、Javascript里三种编码方式 js对文字进行编码涉及3个函数escape,encodeURI,encodeURIComponent 相应3个解码函数unescape,decodeURI,d ecodeURIComponent 1、 传递参数时需要使用encodeURIComponent这样组合的url才不会被#等特殊字符截断。 例如
script languagejavascriptdocument.write(a hrefhttp://passport.baidu.com/?logoutaid7uencodeURIComponent(http://cang.baidu.com/bruce42)退出/a);/script 2、 进行url跳转时可以整体使用encodeURI 例如
Location.hrefencodeURI(http://cang.baidu.com/do/s?word百度ct21); 3、 js使用数据时可以使用escape [Huoho.Com编辑] 例如搜藏中history纪录。 4、 escape对0-255以外的unicode值进行编码时输出%u****格式其它情况下escapeencodeURIencodeURIComponent编码结果相同。 5、 最多使用的应为encodeURIComponent它是将中文、韩文等特殊字符转换成utf-8格式的url编码所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持form中的编码方式和当前页面编码方式相同 ps:web项目里一般整个工程编码统一为utf-8对应tomcat也要配置URIEncode为utf-8。这样中文传普通值才不会乱码 二、三种编码不编码的字符 escape不编码字符有69个*-./_0-9a-zA-Z encodeURI不编码字符有82个!#$()*,-./:;?_~0-9a-zA-Z encodeURIComponent不编码字符有71个! ()*-._~0-9a-zA-Z 三、三种编码对应java的编解码为 java.net.URLDecoder / java.net.URLEncoder 对应的是javascript的 encodeURI/decodeURI 和 encodeURIComponent/decodeURIComponent 四、java版本处理escape和unescape /*** BJava 版本 仿javasciprt Escape/unEscape 方法/B* * author vernon.zheng* version 1.0*/
public class JSCodeUtils {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();}
} 最后 对于汉文字符串来说假如不期望吧字符串编码各式转化为UTF-8各式的比如原界面和目的界面的charset是一致的时候只需要应用escape。假如你的页面是GB2312或者更多有联系的编码而接受参数parameter的页面是UTF-8编码的就要采用encodeURI或者encodeURIComponent。