主要的特殊字符:英文(半角)状态的 单引号 ‘ 双引号"? 斜杠 ? 反斜杠 /? and符号&? ?大于号 >? 小于号 <? ?空格?
9个特殊符号,可以采取录入的时候进行控制,禁止输入。或者在存入数据库的时候进行转义。或者从数据库取出时候转义。或者在页面进行转义替换等方案。
涉及到:特殊字符可能对? 数据库代码 js造成错误。所以要考虑 数据库特殊字符? ? ?编写语言特殊字符? ?html页面特殊字符等。
方案一、存入数据库前对数据进行转义??
json串中包含特殊的字符时,可用正则过滤,把特殊的字符改成对应的,存入数据库
value.replace(/&;/g,"&").
replace(/"/g,""").
replace(/‘/g,"'").
replace(/&;/g,"<").
replace(/&;/g,">")
原文链接:https://blog.csdn.net/liushuiziyouliu/article/details/76348830
方案二?从数据库中取出json返回前台之前转化:?
注意:对单引号这个方法不适用,单引号只能存数据库之前进行转义
public static String stringToJson(String s) {????
??????????StringBuffer sb = new StringBuffer ();?????
??????????for (int i=0; i<s.length(); i++) {?????
????????
??????????????char c = s.charAt(i);?????
??????????????switch (c) {?????
??????????????case ‘"‘:?????
??????????????????sb.append(""");?????
??????????????????break;?????
//??????????????case ‘‘:???//如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
//??????????????????sb.append("\");?????
//??????????????????break;?????
??????????????case ‘/‘:?????
??????????????????sb.append("/");?????
??????????????????break;?????
??????????????case ‘b‘:??????//退格
??????????????????sb.append("b");?????
??????????????????break;?????
??????????????case ‘f‘:??????//走纸换页
??????????????????sb.append("f");?????
??????????????????break;?????
??????????????case ‘n‘:?????
??????????????????sb.append("n"); //换行????
??????????????????break;?????
??????????????case ‘r‘:??????//回车
??????????????????sb.append("r");?????
??????????????????break;?????
??????????????case ‘t‘:??????//横向跳格
??????????????????sb.append("t");?????
??????????????????break;?????
??????????????default:?????
??????????????????sb.append(c);????
??????????????}}
??????????return sb.toString();?????
???????}
java 单引号保存数据库之前进行单独的处理之后在保存数据库:
public static String StringDanYinToJSON(String ors) {
???????????ors = ors == null ? "" : ors;
???????????StringBuffer buffer = new StringBuffer(ors);
???????????int i = 0;
???????????while (i < buffer.length()) {
????????????if (buffer.charAt(i) == ‘‘‘ || buffer.charAt(i) == ‘‘) {
?????????????buffer.insert(i,‘‘);
?????????????i += 2;
????????????} else {
?????????????i++;
????????????}
??????????}
???????????return buffer.toString();
?????}
?
方案三? js解决办法? 使用JSON.parse()前? 把特殊字符串进行替换

?
?
方案四、从数据库取出后处理
在对数据库取出来的数据(特别是描写叙述信息)里面含有特殊字符的话。使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引號,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,以下展示的是C#代码编码和转义几个经常使用特殊字符。经过笔者測试,将这些符号编码和转义之后,大部分json字符串都能够转换成json对象了。假设遇到个别问题,应朝着这个方向去查找问题。
theString = theString.Replace(">",">");
theString = theString.Replace("<","<");
theString = theString.Replace(" "," ");
theString = theString.Replace(""",""");
? theString = theString.Replace("‘","'");
theString = theString.Replace("","\");//对斜线的转义
? theString = theString.Replace("n","n");
theString = theString.Replace("r","r");
注意:r是回到行首。n是新启一行,这两个一般同一时候出现,应该同一时候处理。
?
?
补充:文字中间的换行,空格在数据库里面不以rn, ;等形式显示出来(“本书”与“前80”之间换行。“由”与“曹雪芹”之间空格)
文字:
?

?
?
数据库:
