Java-html代码和特殊字符转义

0 篇文章 0 订阅

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 &nbsp;, if you do that you loss 
           // word breaking
           if (lastWasBlankChar) {
               lastWasBlankChar = false;
               sb.append("&nbsp;");
               }
           else {
               lastWasBlankChar = true;
               sb.append(' ');
               }
           }
       else {
           lastWasBlankChar = false;
           //
           // HTML Special Chars
           if (c == '"')
               sb.append("&quot;");
           else if (c == '&')
               sb.append("&amp;");
           else if (c == '<')
               sb.append("&lt;");
           else if (c == '>')
               sb.append("&gt;");
           else if (c == '\n')
               // Handle Newline
               sb.append("&lt;br/&gt;");
           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转义。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值