JavaScript各种常见编码解码转换
程序员文章站
2022-07-05 14:43:12
...
一般我们使用正则表达式转换特殊编码,如< > &,这类一般为html encode,比较容易替换,如下
RegExp
function htmlDecodeByRegExp(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, "\'");
s = s.replace(/"/g, "\"");
return s;
}
当存在以下编码:
- <>&
- ©"®
- AB中文
- 中文
- Unicode编码的十进制或16进制表示的转义
再使用正则表达式就难以覆盖全,最简单的方法如下:
JavaScript
function htmlEncode(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;
}
function htmlDecode(encodedHtml) {
//1.首先动态创建一个容器标签元素,如DIV
var temp = document.createElement("div");
//2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)
temp.innerHTML = encodedHtml;
//3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。
var output = temp.innerText || temp.textContent;
temp = null;
return output;
}
Jquery
function htmlEncode(html) {
return $("<div>").text(html).html();
};
function htmlDecode(encodedHtml) {
return $("<div>").html(encodedHtml).text();
};
将上述方法封装为工具类
var HtmlUtil = {
/*1.用浏览器内部转换器实现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;
},
/*2.用浏览器内部转换器实现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;
},
/*3.用正则表达式实现html转码*/
htmlEncodeByRegExp: function (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, "'");
s = s.replace(/\"/g, """);
return s;
},
/*4.用正则表达式实现html解码*/
htmlDecodeByRegExp: function (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, "\'");
s = s.replace(/"/g, "\"");
return s;
}
};
上一篇: Postgresql 类似oracle的decode
下一篇: oracle之DECODE()函数
推荐阅读
-
asp(JavaScript)自动判断网页编码并转换的代码
-
浅谈JavaScript中的字符编码转换问题
-
JavaScript各种常见编码解码转换
-
JavaScript字符集编码与解码详谈
-
一篇文章搞定JavaScript类型转换(面试常见)
-
JavaScript、C# URL编码、解码总结
-
js的字符串加密/javascript字符编码 escape,urlencode等使用asp解密或者解码
-
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
-
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)_javascript技巧
-
【java基础】采用字节流的文件IO演示,字节流与字符流转换,转换流的编码解码