public class ChineseUtils {
public static void main(String[] args) {
String str= "中国 (1).jpg";
try {
String str2= new String(str.getBytes("iso-8859-1"),"iso-8859-1");
System.out.println(str2);
System.out.println(isMessyCode(str2));
System.out.println(toChinese(str2));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
private static boolean isChinese(charc) {
Character.UnicodeBlock ub=Character.UnicodeBlock.of(c);if (ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A|| ub ==Character.UnicodeBlock.GENERAL_PUNCTUATION|| ub ==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION|| ub ==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
returntrue;
}
returnfalse;
}
public static boolean isMessyCode(String strName) {
Pattern p= Pattern.compile("\\s*|\t*|\r*|\n*");
Matcher m=p.matcher(strName);
String after= m.replaceAll("");
String temp= after.replaceAll("\\p{P}", "");char[] ch =temp.trim().toCharArray();float chLength = 0;float count = 0;for (int i = 0; i < ch.length; i++) {char c =ch[i];if (!Character.isLetterOrDigit(c)) {if (!isChinese(c)) {
count= count + 1;
}
chLength++;
}
}float result = count /chLength ;if (result > 0.4) {
returntrue;
}else{
returnfalse;
}
}
public static String toChinese(String msg){if(isMessyCode(msg)){
try {
return new String(msg.getBytes("ISO8859-1"), "UTF-8");
} catch (Exception e) {
}
}
return msg ;
}
}