1. 特殊字符转义
适用场景:向前台传递json数据时,由于传递的字符串中含有特殊字符,需要转义之后返回给前台
public static String specialCharConvert(String orginalStr) {
if(!isEmpty(orginalStr)) {
StringBuffer sb = new StringBuffer();
char tmpc = 'a';
for (int i = 0; i < orginalStr.length(); i++) {
tmpc = orginalStr.charAt(i);
switch (tmpc) {
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(tmpc);
}
}
return sb.toString();
} else {
return "";
}
}
2. html代码转义
适用场景:向前台传递的数据含有html代码,需要转义展示
public static String stringToHTMLString(String string) {
StringBuffer sb = new StringBuffer(string.length());
// true if last char was blank
boolean lastWasBlankChar = false;
int len = string.length();
char c;
for (int i = 0; i < len; i++)
{
c = string.charAt(i);
if (c == ' ') {
// blank gets extra work,
// this solves the problem you get if you replace all
// blanks with , if you do that you loss
// word breaking
if (lastWasBlankChar) {
lastWasBlankChar = false;
sb.append(" ");
}
else {
lastWasBlankChar = true;
sb.append(' ');
}
}
else {
lastWasBlankChar = false;
//
// HTML Special Chars
if (c == '"')
sb.append(""");
else if (c == '&')
sb.append("&");
else if (c == '<')
sb.append("<");
else if (c == '>')
sb.append(">");
else if (c == '\n')
// Handle Newline
sb.append("<br/>");
else {
int ci = 0xffff & c;
if (ci < 160 )
// nothing special only 7 Bit
sb.append(c);
else {
// Not 7 Bit use the unicode system
sb.append("&#");
sb.append(new Integer(ci).toString());
sb.append(';');
}
}
}
}
return sb.toString();
}
可以使用spring自带的HtmlUtils或者Apache的StringEscapeUtils转义。