解析类似 %u641c%u72d0 的编码。因为Java中的 char 类型采用的就是Unicode编码, 因此将其中的16进制数先读取成int型,再转成char类型就可以了。
import
java.util.ArrayList;
public class UnicodeDecoder {
public static String decode(String codes) {
ArrayList < String > code_list = new ArrayList < String > ();
StringBuffer period = new StringBuffer();
codes = codes.substring( 1 );
codes += ' % ' ;
for ( int i = 0 ; i < codes.length(); i ++ ) { // 拆分字符
if (codes.charAt(i) == ' % ' && period.length() != 0 ) {
code_list.add(period.toString());
period = new StringBuffer();
} else {
period.append(codes.charAt(i));
}
}
StringBuffer result = new StringBuffer();
for (String code : code_list) { // 逐个转换
result.append(( char ) Integer.valueOf(code.substring( 1 ), 16 ).intValue());
}
return result.toString();
}
}
public class UnicodeDecoder {
public static String decode(String codes) {
ArrayList < String > code_list = new ArrayList < String > ();
StringBuffer period = new StringBuffer();
codes = codes.substring( 1 );
codes += ' % ' ;
for ( int i = 0 ; i < codes.length(); i ++ ) { // 拆分字符
if (codes.charAt(i) == ' % ' && period.length() != 0 ) {
code_list.add(period.toString());
period = new StringBuffer();
} else {
period.append(codes.charAt(i));
}
}
StringBuffer result = new StringBuffer();
for (String code : code_list) { // 逐个转换
result.append(( char ) Integer.valueOf(code.substring( 1 ), 16 ).intValue());
}
return result.toString();
}
}
使用时,UnicodeDecoder.decode("%u641c%u72d0") 即可得到编码对应的内容。
转载:http://gaofeihang.blog.163.com/blog/static/84508285201031242737966/