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; } }