package com.yc.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.poi.util.StringUtil; /** * 判断是否为中文乱码,是的就转换过来 * * */ public class ChineseUtill { private static boolean isChinese(char c) { 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) { return true; } return false; } 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)||(c+"").matches("[\u4e00-\u9fa5]+")) { //&&!(c+"").matches("[\u4e00-\u9fa5]+") if (!isChinese(c)) { count = count + 1; } chLength++; } } float result = count / chLength ; if (result > 0.4) { return true; } else { return false; } } public static String tranfrom(String tempMsg){ // String tempMsg = TransformUtils.toString(msg) ; if(isMessyCode(tempMsg)){ try { return new String(tempMsg.getBytes("GBK"), "UTF-8"); } catch (Exception e) { } } return tempMsg ; } public static String toChinese(String tempMsg){ String str=ChineseUtill.tranfrom(tempMsg); if(tempMsg.length()鏂板缓瑙掕壊鎵归噺澶嶅埗鐢ㄦ埛鏉冮檺鍒锋柊鍔熻兘妯″潡锛堣鑹诧級鏉冮檺鍒楄〃澶嶅埗瑙掕壊"; String str="03\",\"begintime\":\"14:00:00 \",\"qjenddate\":\"2016-11-05\",\"endtime\":\"18:00:00 \",\"qjnumber\""; // String str=ChineseUtill.toChinese(tempMsg); System.out.println(str.length()); String s=str.replaceAll("\"\\s+$\\b", ""); System.out.println(s); System.out.println(s.length()); // // String str_VarMboxRead = "鍒锋柊鍔熻兘妯″潡锛堣鑹诧級鏉冮檺鍒楄〃 dsddd ʻ ʼ

"; // System.out.println("change chinese before VarMboxRead=" // + str_VarMboxRead); // //去掉中午字符, ("[\u4e00-\u9fa5]+")这个字符区间,所有 ASCII:[\x00-\x7F] // String str_Result = "", str_OneStr = ""; // for (int z = 0; z < str_VarMboxRead.length(); z++) { // str_OneStr = str_VarMboxRead.substring(z, z + 1); // if (!str_OneStr.matches("[\u4e00-\u9fa5]+")) { // if (str_OneStr.matches("[\\x00-\\x7F]+")) { // str_Result = str_Result + str_OneStr; // } // }else{ // str_Result+=ChineseUtill.toChinese(str_OneStr); // } // System.out.println("change chinese after VarMboxRead=" // + str_Result); // // } // } }