当前位置: 首页 > news >正文

关于数据库存储【\】转义字符反斜杠丢失的问题

背景

开始的时候,发现一个很奇怪的现象

富文本编辑器,前端存储带有"的内容,回显的时候解析就会出问题

后来发现,其实是只要是需要带有\进行转义的内容就会有问题

排查

从前端提交数据,后端获取数据,到数据库存储数据,再从数据库查询返回给前端这个过程

PS:我这里的内容因为是一个动态表单,所以是一个数组,里面有一个富文本,我省略了一些无关的数据

  1. 富文本的字段内容为: "<p> <a href=\"2\" target=\"_blank\">12</a> </p>"
  2. 把动态表单arr进行JSON.stringify进行json一遍,结果为<p> <a href=\\"2\\" target=\\"_blank\\">12</a> </p>
  3. 然后前端进行post提交的时候,作为body本身又会被json一次
  4. 但是到了后端,本身又会被parse一次,所以这两次相互抵消
  5. 然后会把<p> <a href=\"2\" target=\"_blank\">12</a> </p>这个存入数据库,这里看起来和我们预期是一样的
  6. 然后关键的来了,存储到数据库之后变成了<p> <a href="2" target="_blank">12</a> </p>,也就是这里丢失了转义
  7. 导致查询返回给前端的时候,变成了<p> <a href=\"2\" target=\"_blank\">12</a> </p>,这里进行parse解析的时候报错了
    我这里贴一下完整的测试数据
    let a = [{id: 28,name: "",logo: "",arr: '[{"text":"","content":"<p> <a href="2" target="_blank">12</a> </p>"}]',create_time: "2024-06-14 11:05:23",},
    ];
    JSON.parse(a[0].arr);
    

解决方案

开始的时候本想通过mysql或者express之类的配置解决这个问题,但是没有找到解决方案

最后用一个比较丑陋的方式解决的:就是在存入数据库之前用替换的方式手动增加一个\,这样的话相当于没丢

const realSql = insertSql.replace(/\\/g, "\\\\");

如果有大佬有更好的方案欢迎留言

相关文章:

关于数据库存储【\】转义字符反斜杠丢失的问题

背景 开始的时候&#xff0c;发现一个很奇怪的现象 富文本编辑器&#xff0c;前端存储带有"的内容&#xff0c;回显的时候解析就会出问题 后来发现&#xff0c;其实是只要是需要带有\进行转义的内容就会有问题 排查 从前端提交数据&#xff0c;后端获取数据&#xff…...

Unity3D 如何做好版本控制

目前项目这样版本控制&#xff1a; 1、在unity里&#xff0c;应该只对Assets&#xff08;包含,meta&#xff09;和ProjectSettings这两个文件夹做版本控制&#xff0c;其他的文件都是unity或工具生成出来的。 2、设置project setting ->editor setting-> Asset seriali…...

移动端消息中心,你未必会设计,发一些示例出来看看。

APP消息中心是一个用于管理和展示用户收到的各种消息和通知的功能模块。它在APP中的作用是提供一个集中管理和查看消息的界面&#xff0c;让用户能够方便地查看和处理各种消息。 以下是设计APP消息中心的一些建议&#xff1a; 1. 消息分类&#xff1a; 将消息按照不同的类型进…...

Non-zero exit code pycharm

目录 windows 设置conda代理&#xff1a; linux Conda 使用代理 4. 修改 Conda SSL 验证 pycharm 报错 exceted command pip 设置代理 Non-zero exit code 科学上网后&#xff0c;pip安装时警告报错 WARNING: Retrying (Retry(total0, connectNone, readNone, redirectNo…...

西门子学习笔记12 - BYTE-REAL互相转化

这是针对于前面MQTT协议的接收和发送数组只能是BYTE数组做出的对应的功能块封装。 1、BYTE-REAL转化 1、把byte数组转成字符串形式 2、把字符串转成浮点数 2、REAL-BYTE转化 1、把浮点数转成字符串 2、把字符串转成Byte数组...

科技云报道:“元年”之后,生成式AI将走向何方?

科技云报道原创。 近两年&#xff0c;以大模型为代表的生成式AI技术&#xff0c;成为引爆数字原生最重要的技术奇点&#xff0c;人们见证了各类文生应用的进展速度。Gartner预测&#xff0c;到2026年&#xff0c;超过80%的企业将使用生成式AI的API或模型&#xff0c;或在生产环…...

DAY02 HTML

这里写目录标题 一 WEB基础知识1. 我们可以做什么?2. WEB和Internet3. WEB 开发时需要用到的两类软件 二 HTML入门1. 前端涉及到的三个基础语言2. 定义3. HTML特点 三 HTML语法规则1. HTML 语法基础2. HTML网页结构3. HTML 网页注释 四 HTML标签1. 文本样式的标签2. 换行标签3…...

【Windchill监听器、队列、排程】

目录 Windchill监听器 监听器的概念 监听器的监听器实现原理 监听器的客制化 Windchill队列、排程 队列、排程的概念 Windchill常见出厂队列 自定义队列 Windchill 11新增功能 Windchill监听器 监听器的概念 监听器&#xff0c;字面上的理解就是监听观察某个事件&…...

统计信号处理基础 习题解答10-14

题目&#xff1a; 观测到数据 其中是已知的&#xff0c;是方差为的WGN&#xff0c;且和独立&#xff0c;求的MMSE估计量以及最小贝叶斯MSE。 解答&#xff1a; 观测到的数据写成矢量形式&#xff1a; 其中&#xff1a; 根据题目条件&#xff0c;符合定理10.3&#xff0c;因此…...

APP各种抓包教程

APP各种抓包教程 9/100 发布文章 wananxuexihu 未选择任何文件 new 前言 每当遇到一些 APP 渗透测试项目的时候&#xff0c;抓不了包的问题令人有点难受&#xff0c;但是抓不了包并不能代表目标系统很安全&#xff0c;那么接下来我会整理一下目前我所了解到的一些抓包方法 **声…...

web前端开发项目教学:深入剖析四大核心、五大技能、六大实战、七大建议

web前端开发项目教学&#xff1a;深入剖析四大核心、五大技能、六大实战、七大建议 在数字化的今天&#xff0c;Web前端开发已成为一项不可或缺的技能。无论是初学者还是有一定经验的开发者&#xff0c;都需要通过系统的项目教学来提升自己的技能水平。本文将围绕Web前端开发项…...

从入门到高手的99个python案例(2)

51. 列表和数组比较 - 列表通用&#xff0c;NumPy数组高效。 import numpy as np normal_list [1, 2, 3] np_array np.array([1, 2, 3]) print(np_array.shape) # 输出 (3,), 数组有形状信息 52. Python的内置模块datetime - 处理日期和时间。 from datetime import…...

btstack协议栈实战篇--Performance - Stream Data over SPP (Server)

btstack协议栈---总目录_bt stack是什么-CSDN博客 目录 1.Track throughput 2.Packet Handler 3.btstack_main 4.log信息 RFCOMM连接打开后,请求RFCOMM EVENT CAN SEND NOW,通过rfcomm request can send now event()。 当我们得到RFCOMM EVENT CAN SEND NOW…...

ThinkPHP5.0 apache服务器配置URL重写,index.php去除

本地环境wamp .htaccess文件代码 <IfModule mod_rewrite.c>Options FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> 踩过这个坑&a…...

《TCP/IP网络编程》(第十五章)套接字和标准I/O

之前数据通信时&#xff0c;使用的是read&write函数以及其他各种I/O函数&#xff0c;本章将使用标准I/O函数&#xff0c;例如C语言的fopen、fgetc、fputs等等&#xff1b;C语言的cout、cin等等 1.使用标准I/O函数的优点 ①跨平台兼容性&#xff1a; 标准I/O函数通常是跨平…...

认识一些分布函数-Gumbel分布

1. Gumbel分布 Gumbel分布(也称为古贝尔型)是一种常用的非对称极值分布( Extreme Value Distribution,EVD),用于建模极大值和极小值,也就是所谓的EVD Type I分布。例如,EVD Type I 被用来预测地震、洪水和其他自然灾害,以及在风险管理中建模操作风险和那些在一定年龄…...

C语言之void类型的本质

一&#xff1a;C语言属于强类型语言 &#xff08;1&#xff09;编程语言分两种&#xff1a;强类型语言和弱类型语言。强类型语言所有的变量都有自己固定的类型&#xff0c;这个类型有固定的类型占用&#xff0c;有固定的解析方法&#xff1b;弱类型语言中没有类型的概念&#x…...

Wall国内开源程序照片墙,支持VR全景及安装教程

下载 GitHub官网&#xff1a;https://github.com/zhang-tong-yao/wall 软件下载&#xff1a;https://github.com/zhang-tong-yao/wall/releases&#xff0c;推荐下载最新的版本。 演示效果 目前支持PC端和移动端自适应。 演示地址&#xff1a;https://demo-wall.ityao.cn …...

七个备受欢迎的IntelliJ IDEA实用插件

有了Lombok插件&#xff0c;IntelliJ就能完全理解Lombok注解&#xff0c;使它们能如预期般工作&#xff0c;防止出现错误&#xff0c;并改善IDE的自动完成功能。 作为IntelliJ IDEA的常用用户&#xff0c;会非常喜欢使用它&#xff0c;但我们必须承认&#xff0c;有时这个IDE&…...

HDFS架构

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Apache Hadoop项目的核心组件之一&#xff0c;它是一个分布式文件系统&#xff0c;专为运行在通用硬件上的大型数据集提供高吞吐量的数据访问。HDFS的设计目标是支持大规模数据的存储和处理&#xff0c;尤其是在大…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...