JavaScript:使用escape()、encodeURI()和decodeURI()实现URI编码。
一、URI编码解码 {#heading-0}
{#_lab2_0_0}
1、编解码一个字符串(淘汰) {#heading-1}
ECMAScript v3 反对使用该方法,应使用 decodeURI() 和 decodeURIComponent() 替代它。
escape():编码一个字符串
escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码。
语法:escape(value);
var str = "javascript 你好";
var str1 = escape(str);
document.write(str1); //输出:javascript%20%u4F60%u597D
unecape():解码一个由escape()函数编码的字符串
var str = "javascript 你好";
var str1 = escape(str);
document.write(str1); //javascript%20%u4F60%u597D
var str2 = unescape(str1);
alert(str2); //弹出 javascript你好
2、编解码一个URI {#heading-2}
encodeURI():转义一个URI中的字符
encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。
语法:encodeURI(uri) 这个在编码不同的AJAX请求时,解决中文乱码问题经常用到。
var str1 = "你好javascript";
var str2 = encodeURI(str1);
document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
decodeURI():解码一个URI中的字符
语法:decodeURI(uri)
var str1 = "你好javascript";
var str2 = encodeURI(str1);
document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
var str3 = decodeURI(str2);
document.write("
" + str3) //输出:你好javascript
编解码一个URI组件 {#heading-3}
encodeURIComponent():转义URI组件中的字符
encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
var str1 = "你好javascript";
var str2 = encodeURIComponent(str1);
document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
decodeURIComponent():解码一个URI组件中的字符
var str1 = "你好javascript";
var str2 = encodeURIComponent(str1);
document.write(str2); //输出:%E4%BD%A0%E5%A5%BDjavascript
var str3 = decodeURIComponent(str2);
document.write("
" + str3) //输出:你好javascript
二、html编码解码 {#heading-4}
{#_lab2_1_3}
html编码解码函数 {#heading-5}
编码函数:
function htmlEncode(str) {
var s = "";
if (str.length == 0) return "";
s = str.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/'/g, "'");
s = s.replace(/"/g, """);
return s;
} ;
解码函数:
function htmlDecode(str){
var s = "";
if (str.length == 0) return "";
s = str.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/'/g, "'");
s = s.replace(/"/g, "\"");
return s;
}
用浏览器内部转换器实现 {#heading-6}
实现html转码
htmlEncode:function (html){
//1.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement ("div");
//2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)
(temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
//3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
var output = temp.innerHTML;
temp = null;
return output;
}
实现html解码
htmlDecode:function (text){
//1.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement("div");
//2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)
temp.innerHTML = text;
//3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。
var output = temp.innerText || temp.textContent;
temp = null;
return output;
},