从富文本编辑器获取html内容组装json,特殊字符引起报错解决办法。

简介: 从富文本编辑器获取html内容组装json,特殊字符引起报错解决办法。

最近项目需要,需要从富文本编辑器获取html内容组装json,然后还要

把组装后的json对象利用json2转成json字符串,数据放入编辑器提交,由于兼容ie8以上浏览器。所以搞了好久的特殊字符转义,经常出错。我们一般想到的解决办法就是转义:

/*3.用正则表达式实现html转码*/
function htmlEncodeByRegExp(str){
    var s = "";
    if(str.length == 0) return "";
    s = str.replace(/&/g,"&");
    s = s.replace(/</g,"&lt;");
    s = s.replace(/>/g,"&gt;");
    s = s.replace(/ /g,"");
    s = s.replace(/\'/g,"&#39;");
    s = s.replace(/\"/g,"&quot;");
    s = s.replace(/\n"/g,"");
    s = s.replace(/\r"/g,"");
    return s;
}
/*4.用正则表达式实现html解码*/
function htmlDecodeByRegExp (str){
    var s = "";
    if(str.length == 0) return "";
    s = str.replace(/&amp;/g,"&");
    s = s.replace(/&lt;/g,"<");
    s = s.replace(/&gt;/g,">");
    s = s.replace(/&nbsp;/g," ");
    s = s.replace(/&#39;/g,"\'");
    s = s.replace(/&quot;/g,"\"");
    return s;
}


json字符串本身的引号 和 html里面的引号,在转码后没法区分哪些是数据格式,哪些属于从编辑器获取的Html里面的。
后来想到一种解决办法,就是对从富文本编辑器里面的内容进行base64编码,展示的时候再解码,就完全屏蔽掉了所有的特殊字符。
因此采用了jquery.base64.js.具体使用方法是:


编码

dec.val($.base64.btoa(this.value));
            // also possible:
            // dec.val( $.base64('encode', this.value) );
            // dec.val( $.base64.encode(this.value) );


解码



// note: you can pass a third parameter to use the utf8 en- / decode option
            enc.val($.base64.atob(this.value, true));
            // also possible:
            // dec.val( $.base64('decode', this.value) );
            // dec.val( $.base64.decode(this.value) );


相关文章
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
51 1
|
4月前
|
JSON 前端开发 JavaScript
HTML 字符实体1
HTML 字符实体用于替代预留字符和键盘上无法输入的字符。例如,小于号 (&lt;) 和大于号 (&gt;) 必须用 `&lt;` 和 `&gt;` 替换,以避免被浏览器误认为标签。常用的字符实体还包括不间断空格 (`&nbsp;`),用于在页面中增加空格数量。
HTML 字符实体2
发音符号是加在字母上的字形,用于表示不同的发音。常见的变音符号有尖音符( ̀)、抑音符( ́)等,它们可以出现在字母的上方、下方或内部,甚至两个字母之间。这些符号可以与字母或数字字符组合使用,以改变其发音。例如:a&#768; 表示 à,O&#769; 表示 Ó。
|
5月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
113 0
|
6月前
|
存储 移动开发 编解码
基于HTML5开发的Markdown在线编辑器
Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。
134 4
HTML 字符实体3
HTML字符实体用于在网页中显示特殊字符。常见的字符实体包括空格(&nbsp;)、小于号(&lt;)、大于号(&gt;)、和号(&amp;)等。注意,实体名称对大小写敏感。例如,版权符号可以表示为 &copy; 或 &#169;。
|
2月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
139 2
|
3月前
|
自然语言处理 开发者
HTML 字符实体的妙用
HTML字符实体在网页设计与开发中有诸多妙用:首先,它们能避免解析冲突,确保特殊字符如`&lt;`、`&gt;`和`&`不会被误认为标签;其次,可用于显示不可见字符,如不间断空格`&nbsp;`,优化文本格式。此外,借助字符实体还可轻松插入多语言符号,如`&yen;`表示的日元符号¥,提升网页国际化水平。在代码中使用字符实体亦能增强可读性,尤其当涉及大量特殊字符时,便于他人理解。最后,在旧版浏览器或特定编码环境下,字符实体确保了文本的一致显示,提高了兼容性。
|
2月前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
40 0