`
huang552
  • 浏览: 102517 次
  • 性别: 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"));  
	  }  
	}  

 

分享到:
评论

相关推荐

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

    在Java中判断字符串是否含有乱码是一个常见的问题,特别是在处理网络传输数据或文本文件导入导出时。本文将介绍通过实例代码如何判断一个字符串是否含有乱码,并通过编写的Java方法来实现此功能。 首先,我们需要...

    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读取中文乱码 自动判断文档类型并转码

    为了解决这个问题,我们可以通过自动判断文档类型并转码来解决乱码问题。 在 Java 中,我们可以使用 BufferedInputStream 和 BufferedReader 来读取文件,并通过判断文件的前三个字节来确定文件的编码格式。常见的...

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

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

    PHP实现中文字符的无乱码截断.doc

    通过检测每个字符的第一个字节,我们可以准确地判断出字符的字节长度,并据此进行截取操作,从而避免了乱码问题的出现。这些函数在处理中文文本时非常有用,特别是在需要显示固定长度的摘要或预览文本时。 ### 使用...

    c#汉字乱码处理

    在C#编程中,处理汉字乱码问题是一个常见的需求,尤其是在读取或写入文本文件时。当在C#控制台应用中遇到汉字输出乱码的情况,这通常是因为编码不匹配所导致的。编码是字符集与二进制数据之间的转换规则,不同的系统...

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

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

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

    在Android平台上,开发人员经常遇到一个棘手的问题,那就是如何正确地读取包含中文字符的TXT文件,因为不恰当的处理往往会导致乱码。本文将深入探讨如何彻底解决这一问题,包括自动判断文档编码类型以及进行转码操作...

    判断字符串编码是utf-8还是gb23121

    在这个文件中,定义一个函数is_gb2312,该函数用于判断字符串编码是否为gb2312。函数的实现逻辑是,遍历字符串的每个字符,然后通过ord函数获得该字符的ASCII值,如果该值大于127,那么就可能是gb2312编码。然后,...

    检测某个字符是否存在

    本程序主要实现了对字符串中特定字符的检测,并通过一系列的输入输出操作来完成任务。虽然程序中存在一些不太规范的写法,如使用了已废弃的`gets`函数、循环结构不够直观等,但整体上仍然展示了一些基本的C语言编程...

    解决Inno Setup制作中文安装包在非中文系统上显示乱码的问题

    在制作安装包时,Inno Setup 是一个常用的选择,尤其是在制作中文安装包时。但是,在非中文系统上,Inno Setup 制作的中文安装包常常会出现乱码的问题。这篇文章将讲解如何解决这个问题。 首先,我们需要下载支持 ...

    使用过滤器解决中文乱码问题

    在Web开发过程中,经常遇到的一个问题是中文或其它非ASCII字符的乱码问题。这种现象通常出现在浏览器接收的数据与实际编码格式不匹配时。解决此类问题的一种常见方法是使用过滤器(Filter)对请求进行预处理,以确保...

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

    这些方法都有一个可选的编码参数,同样可以避免乱码问题: ```vb.net Dim content As String = File.ReadAllText(filePath, encoding) Dim lines() As String = File.ReadAllLines(filePath, encoding) ``` 总之,...

    QRCode二维码生成DLL 解决全中文乱码 源码奉上,经过Reflector反编译分析

    通过Reflector反编译分析源码,可以定位问题所在,优化代码以实现正确处理中文字符,从而提供一个稳定且功能齐全的二维码生成解决方案。在实际应用中,开发者应关注字符编码的细节,确保数据在编码、传输和解码过程...

    S22.Imap解决中文乱码问题

    总的来说,理解和处理中文乱码问题需要对字符编码有深入的理解,以及对S22.Imap库的熟悉。通过适当地修改源码,开发者能够克服这个障碍,使得S22.Imap能够更准确地处理含有中文字符的邮件,从而提升用户体验。

    java中截取带汉字的字符串

    在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。这是因为一个中文字符通常占用多...

    计算字符串中的单双字节字符个数

    在ASCII编码中,每个字符只需要一个字节(8位)来表示,因此称为单字节字符。这包括英文字符、数字、标点符号等。然而,对于包含多种语言和复杂字符集的Unicode编码,一个字符可能需要两个字节或更多来表示,比如...

    乱码字符统计.xlsx

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

Global site tag (gtag.js) - Google Analytics