json的字符串中不能包含哪些字符 如何处理json中的非法utf8字符
json的字符串中不能包含哪些字符
1. 回车问题
JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:
1 $str = preg_replace("([
])[s] ", "", $str)
2
3 // 不用正则
4 $str = str_replace("
","",$str)
转出来的字符串就没有回车符的困扰了。
顺便记录一个PHP过滤脚本:
01 02 // $document 应包含一个 HTML 文档。
如何处理json中的非法utf8字符
在BB10 Cascades开发环境中可以轻松地通过JsonDataAccess类读写json文件,将json文件中的数据转换成内存对象。
不过对于中国开发者来讲有个苦恼,就是通过样例读取json文件时如果json文件中有中文字符,所有中文字符在BB10 Cascades组件中显示时会显示为乱码,就是显示成一个方框。
解决这个问题的方法很简单,就是设置json文件的编码格式,因为BB10 Cascades开发环境使用UTF-8作为缺省编码,所以需要将程序使用的Json文件转成UTF-8格式。
当然,对json文件的编码转换可以使用很多种方式,如使用UltraEdit等工具,不过最方便的是使用BB10 Cascades自带的工具进行转换。
在BB10 Cascades开发环境中右键选择需要处理的json文件,点击“Properties”打开文件属性框,然后在“Text file encording”选择项中选择“Other”,然后选择“UTF-8”。这样就可以将你需要处理的json文件转换成UTF-8格式,在程序中使用时就不会有乱码了。
JSON如何获取非法字符的字段的值
使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。
//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ()
for (int i=0 i
char c = s.charAt(i)
switch (c) {
case ":
sb.append("\"")
break
// case \: //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
// sb.append("\\")
// break
case /:
sb.append("\/")
break
case : //退格
sb.append("\b")
break
case f: //走纸换页
sb.append("\f")
break
case
:
sb.append("\n") //换行
break
case
: //回车
sb.append("\r")
break
case : //横向跳格
sb.append("\t")
break
default:
sb.append(c)
}}
return sb.toString()
}
//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
//处理文本中的单引号 和 斜杠
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()
}
c语言中非法字符有哪些?
首先看定义,用单引号括起来的单个字符,或用双引号括起来的一串字符即字符常量。
C & 是用单引号括起来的单个字符,正确。
A xff B 65 D 28 是用单引号括起来的多个字符,但因它们前面都 有一个转义符 ‘‘ ,就不能说它们都不符合定义,都不合法的。
A xff 中 x 组合表示是一个十六进制数 ffH = 10 进制的 255 ,它代表一个不可见字符的ASCII 码, 合法 。
B 65 同理 三个十进制数 ddd 表示的是 八进制数。65 = 65 = 10 进制的 53, 是 ‘F’ 的ASCII 码表示。单 字,合法。
D 28 同上表示是八进制数,但八进制数中逢八则进一,是不会出现 8 的,所以格式虽对但数值错了。不合法。
什么是非法字符.
非法字符,又叫敏感词语、敏感词汇,简单的说就是不符合审核原则的字符、词语。不同的网站、论坛略有不同。一般是指那些涉及淫秽、国家安全、政治性很强等等方面的字符与词语,由系统自动审核。一般不会公布,所以有时令人一头雾水,哭笑不能!
案例
1.在某论坛有句话“……和男性交流”,被认为有敏感词语,大概系统当作“性交”,后来改为“……和男性朋友交流”,审核通过。
2.爱问有段时间,把“脱机”定为敏感词语,现在好像修改了,只好把“脱机”改为“脱 机”
解决办法,根据原则,大致判断是哪个字符,再作技术处理:
1.用同义词代替,如:案例2.插入字符、空格,如:案例3.用字母或拼音缩写代替。