`
huang552
  • 浏览: 99671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

判断一个字符中是否有乱码

 
阅读更多
package com.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @description 判断中文是否乱码
 */

public class MessyCodeCheck {  
	  
	  public 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 = ch.length;  
	    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;  
	        }  
	      }  
	    }  
	    float result = count / chLength;  
	    if (result > 0.2) {//乱码字符 大于原内容的20%算是乱码  
	      return true;  
	    } else {  
	      return false;  
	    }  
	  
	  }  
	  
	  public static void main(String[] args) {  
	    System.out.println(isMessyCode("XYZr�������ABCDԴ"));  
	    System.out.println(isMessyCode("平台新¥%&#@*(版本发布"));
	    System.out.println(isMessyCode("System.out.println"));  
	  }  
	}  

 

分享到:
评论

相关推荐

    C++实现判断一个字符串是否为UTF8或GBK格式的方法

    下面是一个判断字符串是否为utf8的函数: bool is_str_utf8(const char* str) { unsigned int nBytes = 0;//UFT8可用1-6个字节编码,ASCII用一个字节 unsigned char chr = *str; bool bAllAscii = t

    解决android读取中文乱码 自动判断文档类型并转码

    彻底解决android读取中文txt的乱码(自动判断文档类型并转码).doc

    Java判断字符串是否含有乱码实例代码

    本文通过实例代码给大家介绍了Java判断字符串是否含有乱码的方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

    C#简单判断字符编码的方法

    本文实例讲述了C#简单判断字符编码的方法。分享给大家供大家参考,具体如下: public static string GetText(byte[] buff) { string strReslut = string.Empty; if (buff.Length &gt; 3) { if (buff[0] == 239 && ...

    ZXing 2.1版GBK中文乱码解决办法

    zxing中扫瞄二维码图片,如果包含Gbk中文,乱码解决办法是修改DecodedBitStreamParser.h文件,在里面加入GBK的判断。 在2.1版本中,解码的定义不在这个类中了,挪到了StringUtils类中,所以需要修改这个类,在修改...

    乱码字符统计.xlsx

    其中包含100+个乱码的字符,可以用于判断部分字符是否乱码

    中英文字符串分割算法C++C程序示例

    &lt;Rule.1&gt;: 一个字符串的长度==1,那肯定是一个ASCII字符; &lt;Rule.2&gt;: 一个字符串的长度==2,且第1个ASCII字符的编码小于'~'; 那肯定是2个单ASCII字符; -- (PS: "") &lt;Rule.3&gt;: 一个字符串的长度==3,且中间的...

    解决GDAL读取SHP中文乱码

    完善说明,通过对网上的东西,东拼西凑的,终于解决了GDAL读取中文的乱码问题,或者是通过设置Gdal.SetConfigOption("SHAPE_ENCODING","CP936")后,能够读取中文,但是还是存在一个BUG,那比较中文是“张三”,读取...

    php中文字符截取防乱码

    当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现...而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了

    VB.NET读取文本(解决乱码)

    VB.NET读取文本(解决乱码),实用性代码。

    python 判断字符串中是否含有汉字或非汉字的实例

    model中compile值可以根据需要更改,满足不同的检测需求 #判断一段文本中是否包含简体中文 import re zhmodel = re.compile(u'[\u4e00-\u9fa5]') #检查中文 ...以上这篇python 判断字符串中是否含

    VC++ c++ 窗体多国语言动态切换 多语言实例 源码 可以解决乱码问题 中日系统 中文 日文系统中乱码问题解决的一个方法

    把所有用到的字符串都放... 2、提供一个全局函数,如 g_LoadString(CString szID),根据提供的字符串ID返回其内容,具体是哪个语言的在函数中判断,这样在程序中只要提供一个字符串ID就可以自动加载不同语言的文字了。

    C#判断字符编码的方法总结(六种方法)

    主要介绍了C#判断字符编码的方法,结合实例形式总结分析了六种C#判断字符编码的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    myEclipse乱码解决办法

    在Myeclipse导入一个项目,有中文乱码问题,解决方法如下: 一、将整个project设置编码UTF-8(UTF-8可以最大的支持国际化) windows-&gt;Preferences-&gt;general-&gt;Workspace-&gt;Text file encoding-&gt;Other框中的Text ...

    PHP截取中文字符串的问题

    解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的。

    android 读取sd卡的txt并去除乱码

    android 读取sd卡的txt并去除乱码 参考很多其他的读取操作,有时会有乱码的情况发生,所以这里需要一个自己判断字符,再读取 原文地址:http://blog.csdn.net/z13580130369/article/details/45890525

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    php生成二维码时出现中文乱码的解决方法

    遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个类型没有内容,随即判断没内容就加上一个固定的字符串,这样乱码的问题得以解决. ...

    支持中文目录wget版本,linux版本

    append_uri_pathel()函数是通过FILE_CHAR_TEST (*p, mask)这一句来判断该字符是否为特殊字符,而同时它会认为中文也是特殊字符,然后按照转换空格之类的方式对中文进行转义,这样就会造成中文乱码的情况,知道了问题...

    GB18030汉字的GB18030 Unicode URL编码对照表.xlsx

    目前大部分的网站,都是使用的UTF-8编码。例如发送一段二进制到服务器时,服务器规定该二进制内容的编码...附件是GB18030包含的21004个汉字的GB18030编码、Unicode编码、URL编码对照表,可用于解决中文乱码转换恢复。

Global site tag (gtag.js) - Google Analytics