json怎么解析特殊字符
发布网友
发布时间:2022-04-25 12:34
我来回答
共1个回答
热心网友
时间:2022-04-22 11:12
1. 回车问题
JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:
1 $str = preg_replace("'([\r\n])[\s]+'", "", $str);
2
3 // 不用正则
4 $str = str_replace("\n","",$str);
转出来的字符串就没有回车符的困扰了。
顺便记录一个PHP过滤脚本:
01 <?php
02 // $document 应包含一个 HTML 文档。
03 // 本例将去掉 HTML 标记,javascript 代码
04 // 和空白字符。还会将一些通用的
05 // HTML 实体转换成相应的文本。
06
07 $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript
08 "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记
09 "'([\r\n])[\s]+'", // 去掉空白字符
10 "'&(quot|#34);'i", // 替换 HTML 实体
11 "'&(amp|#38);'i",
12 "'&(lt|#60);'i",
13 "'&(gt|#62);'i",
14 "'&(nbsp|#160);'i",
15 "'&(iexcl|#161);'i",
16 "'&(cent|#162);'i",
17 "'&(pound|#163);'i",
18 "'&(copy|#169);'i",
19 "'(\d+);'e"); // 作为 PHP 代码运行
20
21 $replace = array ("",
22 "",
23 "\\1",
24 "\"",
25 "&",
26 "<",
27 ">",
28 " ",
29 chr(161),
30 chr(162),
31 chr(163),
32 chr(169),
33 "chr(\\1)");
34
35 $text = preg_replace ($search, $replace, $document);
36 ?>
2. HTML特殊字符
从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 '<b>msg</b> #' 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg #,这是由于<与>之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。
解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:
01 <script type="text/javascript">
02 var str = '<b>msg</b> #';
03 document.all.div1.innerHTML='<pre>'+str+'</pre>';
04
05 //js中的字符串正常显示在HTML页面中
06 String.prototype.displayHtml= function(){
07 //将字符串转换成数组
08 var strArr = this.split('');
09 //HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换
10 var htmlChar="&<>";
11 for(var i = 0; i< str.length;i++){
12 //查找是否含有特殊的HTML字符
13 if(htmlChar.indexOf(str.charAt(i)) !=-1){
14 //如果存在,则将它们转换成对应的HTML实体
15 switch (str.charAt(i)) {
16 case '<':
17 strArr.splice(i,1,'<');
18 break;
19 case '>':
20 strArr.splice(i,1,'>');
21 break;
22 case '&':
23 strArr.splice(i,1,'&');
24 }
25 }
26 }
27 return strArr.join('');
28 }
29 alert(str.displayHtml());
30 document.all.div2.innerHTML=str.displayHtml();
31 </script>
3. escape()函数
该函数可以处理空格、斜线和其他任何可能影响浏览器的内容,并将它们转换成 Web 可用字符(比如,空格会被转换成 %20,浏览器并不会将其视为空格处理,而是不做更改,将其直接传递到服务器)。之后,服务器会(通常自动)再把它们转换回它们传输后的本来 “面目”。
1 var url = "nowamagic.php?people=" + escape(people.toJSONString());
2 request.open("GET", url, true);
3 request.onreadystatechange = updatePage;
4 request.send(null);
这种做法的缺点有两个:
在使用 GET 请求发送大块数据时,对 URL 字符串有长度*。虽然这个*很宽泛,但对象的 JSON
字符串表示的长度可能超出您的想象,尤其是在使用极其复杂的对象时更是如此。在跨网络以纯文本发送所有数据的时候,发送数据面临的不安全性超出了您的处理能力。
简言之,以上是 GET 请求的两个*,而不是简单的两个与 JSON 数据相关的事情。在想要发送用户名和姓之外的更多内容,比如表单中的选择时,二者可能会需要多加注意。若要处理任何机密或极长的内容,可以使用 POST 请求。
4. 引号问题
JSON中如果包含引号或双引号,会破坏JSON的格式。有两种方法可以解决。
在入库的时候可以使用addslashes()函数处理一下字符串,给引号前加上斜杠。被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符NULL。
1 $text = addslashes($text);
JavaScript的话,可以这样:
1 function valueReplace(v){
2 v=v.toString().replace(new RegExp('(["\"])', 'g'),"\\\"");
3 return v;
4 }
5 var eValue = encodeURI($.trim(valueReplace(e.value)))
就总结到这里。
json怎么解析特殊字符
从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 'msg #' 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg #,这是由于<与>之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。解决办法很简单...
json格式如何读取有特殊字符的数据!内详!
json格式是{"a":"b","c":"d"},所以你从数据库读出的值如果包含{,",逗号,这类构造json格式的特殊字符,那么就容易破坏json数据的格式,自然无法正确读出,用replace方法替换掉特殊字符,在特殊字符前加\。例如:String s = "a:b,c";s.replace(":","\:").replace(",","\,");...
如何处理JSON中的特殊字符
1. 回车问题 JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:str = preg_replace("'([\r\n])[\s]+'", "", $str);// 不用正则 str = str_replace("\n","",$str);转出来的字符串就没有回车符的困扰了。顺便记录一个PHP过滤脚本:<?php// $document 应包含...
如何处理JSON中的特殊字符
可以考虑在json之前先把数据进行编码一下,比如eacape或base64。这样就不用考虑特殊字符了。服务端:含有中文非UTF8字符串->编码(escape或者base64)->json_encode -> 输出到客户端 客户端:json数据捕获 -> 解码(unescape或者unbase64)希望我的回答对你有帮助。
如何处理JSON中的特殊字符,纯文本
可以考虑在json之前先把数据进行编码一下,比如eacape或base64。这样就不用考虑特殊字符了。服务端:含有中文非UTF8字符串->编码(escape或者base64)->json_encode -> 输出到客户端 客户端:json数据捕获 -> 解码(unescape或者unbase64)
如何用jackson解析含有转义字符的字符串,为标准格式的json字符串
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号 public static String stringToJson(String s) { StringBuffer sb = new StringBuffer ();for (int...
如何处理Json数据的换行符等特殊字符
要转义,JSON就是这一个致命的缺点,当有换行符号,单个转义"\"符号的时候,会出现解析失败。避免这个问题,在强类型语言里,采用第三方包转换JSON的时候,其实会自动转义,当您自己去拼接的时候,可能要特殊处理,最简单的方式是replace的方式。
Json.parse时遇到特殊字符报错的解决方案
item);temp = encodeURIComponent(temp);this.cameraList.push(JSON.parse(decodeURIComponent(temp)));});} 在进行数据深拷贝时,先将JSON.stringify方法转换后的数据进行编码,之后再解码,以避免特殊字符导致的错误。通过这一系列操作,我们能够成功解决Json.parse方法在遇到特殊字符时产生的报错问题。
JSON.parse解析特殊字符报错的解决办法
《===》JSON.stringify() : 用于将 JavaScript 值转换为 JSON 字符串;JSON.parse() :用于将一个 JSON 字符串转换为对象;encodeURIComponent() :可把字符串作为 URI 组件进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) ...
json特殊字符有哪些
1:引号 ,如果是使用单引号,来括值的话,那String 中 ' 单引号为特殊字符 2:正斜杠,反斜杠,换行符号等。另外,必须用 (") 而非 (') 表示字符串