1. 程式人生 > >commons-lang常用工具類StringEscapeUtils

commons-lang常用工具類StringEscapeUtils

1.escapeSql 提供sql轉移功能,防止sql注入攻擊,例如典型的萬能密碼攻擊' ' or 1=1 ' '
StringBuffer sql = new StringBuffer("select key_sn,remark,create_date from tb_selogon_key where 1=1 ");
if(!CommUtil.isEmpty(keyWord)){
sql.append(" and like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");
}

2.escapeHtml /unescapeHtml 轉義/反轉義html指令碼
System.out.println(StringEscapeUtils.escapeHtml("<a>dddd</a>"));   
輸出結果為:<a>dddd</a>

System.out.println(StringEscapeUtils.unescapeHtml("<a>dddd</a>"));   
輸出為:<a>ddd</a>

3.escapeJavascript/unescapeJavascript 轉義/反轉義js指令碼
System.out.println(StringEscapeUtils.escapeJavaScript("<script>alert('1111')</script>"));   
輸出為:<script>alert('111')</script>

4.escapeJava/unescapeJava 把字串轉為unicode編碼
System.out.println(StringEscapeUtils.escapeJava("中國"));   
輸出為:用escapeJava方法轉義之後的字串為:/u4E2D/u56FD/u5171/u4EA7/u515A


public static String unicode2String(String unicode) {
StringBuffer string = new StringBuffer();
String[] hex = unicode.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
// 轉換出每一個程式碼點
int data = Integer.parseInt(hex[i], 16);
// 追加成string
string.append((char) data);
}
return string.toString();
}


public static String convert(String utfString){
StringBuilder sb = new StringBuilder();
int i = -1;
int pos = 0;

while((i=utfString.indexOf("\\u", pos)) != -1){
sb.append(utfString.substring(pos, i));
if(i+5 < utfString.length()){
pos = i+6;
sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16));
}
}
return sb.toString();
}


另外再告訴你個更簡單的轉換方式:
System.out.println("\u7f8e");

這樣直接就可以輸出中文,java(JVM)本省也就是unicode