commons.lang
StringEscapeUtils 处理字符转义与反转义
common.utils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.springframework.web.util.HtmlUtils;
public class StringUtilsTest {
@Test
public void test() {
String str="你好呀,<input>这里真不错!";
// ---JavaScript
// String javascriptStr="<script>alert('你好111')</script>";
// System.out.println(StringEscapeUtils.escapeJavaScript(javascriptStr));
// System.out.println(StringEscapeUtils.unescapeJavaScript(javascriptStr));
//输出 <script>alert(\'111\')</script>
// <script>alert('111')</script>
// ----SQL
// StringBuffer sql = new StringBuffer("select * from inf_moderator_info info where 1=1 ");
// if(!CommUtil.isEmpty(keyWord)){
// String keyWord = " ' or 1=你好1 '";
// String keyWord = "很好%";
// System.out.println(StringEscapeUtils.escapeSql(keyWord));
// sql.append(" and info.introduction like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");
// System.out.println(sql);
//输出 '' or 1=1 ''
// --html
// String html="<A>你好dddd</A>";
// System.out.println(StringEscapeUtils.escapeHtml(html));
// System.out.println(StringEscapeUtils.unescapeHtml(html));
// --escapeJava/unescapeJava 把字符串转为unicode编码
// String java="你好dddd";
// System.out.println(StringEscapeUtils.escapeJava(java));
// System.out.println(StringEscapeUtils.unescapeJava(java));
// \u4F60\u597Ddddd
// 你好dddd
// String xml="你好dddd";
// System.out.println(StringEscapeUtils.escapeXml(xml));
// System.out.println(StringEscapeUtils.unescapeXml(xml));
// 你好dddd
// 你好dddd
String a = "<html>吃饭</html>' or 1=1 '<input></input>";
System.out.println(StringEscapeUtils.escapeHtml(a));
// a=StringEscapeUtils.escapeHtml(a);
// System.out.println(StringEscapeUtils.unescapeHtml(StringEscapeUtils.escapeHtml(a)));
// System.out.println(HtmlUtils.htmlEscape(a));
System.out.println(HtmlUtils.htmlUnescape(a));
System.out.println(StringEscapeUtils.unescapeHtml(HtmlUtils.htmlEscape(a)));
// <html>吃饭</html><input></input>
// <html>吃饭</html><input></input>
// <html>吃饭</html><input></input>
// <html>吃饭</html><input></input>
// System.out.println(escapeStr(str));
}
public static String escapeStr(String str) {
if (StringUtils.isEmpty(str)) {
return "";
}
str = StringEscapeUtils.escapeSql(str);
str = StringEscapeUtils.escapeHtml(str);
// str = StringEscapeUtils.escapeJava(str);
// str = StringEscapeUtils.escapeJavaScript(str);
return str;
}
/**
* 字符反转义
*
* @param str
* @return
*/
public static String unescapeStr(String str) {
if (StringUtils.isEmpty(str)) {
return "";
}
str = StringEscapeUtils.unescapeHtml(str);
str = StringEscapeUtils.unescapeJava(str);
str = StringEscapeUtils.unescapeJavaScript(str);
return str;
}
}