`
runfriends
  • 浏览: 230160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java判断文本字符集

 
阅读更多
/*这是一个sourceforge项目,能够判断指定文本或流的字符集*/

/*下面是这个库的简单封装*/

package me.jor.util;

import info.monitorenter.cpdetector.io.ByteOrderMarkDetector;
import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
import info.monitorenter.cpdetector.io.JChardetFacade;
import info.monitorenter.cpdetector.io.ParsingDetector;
import info.monitorenter.cpdetector.io.UnicodeDetector;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.concurrent.atomic.AtomicInteger;

public class CodeDetectUtil {
    private static CodepageDetectorProxy codeDetector;
    private static AtomicInteger threads;

/**初始化*/
    public static void initCodeDetector(){
        if(threads==null){
            synchronized(CodeDetectUtil.class){
                if(threads==null){
                    threads=new AtomicInteger(1);
                    codeDetector=CodepageDetectorProxy.getInstance();
                    codeDetector.add(new ParsingDetector(false));//根据xml文件头判断xml字符集
                    codeDetector.add(JChardetFacade.getInstance());//通用库判断字符集
                    codeDetector.add(UnicodeDetector.getInstance());//判断是否unicode
                    codeDetector.add(new ByteOrderMarkDetector());//根据字节顺序判断字符集
                }else{
                    threads.incrementAndGet();
                }
            }
        }else{
            threads.incrementAndGet();
        }
    }
/**判断结束要反初始化*/
    public static void endCodeDetector(){
        if(threads.get()>0){
            threads.decrementAndGet();
        }
        if(threads.get()<=0){
            synchronized(CodeDetectUtil.class){
                if(threads.get()<=0){
                    codeDetector=null;
                    threads=null;
                }
            }
        }
    }
     /**判断指定文件的字符集*/
     public static String detectCharset (File file) throws MalformedURLException, IOException{
        return codeDetector.detectCodepage(file.toURI().toURL()).name();
    }
}

 
分享到:
评论

相关推荐

    Java判断文件编码格式 - 明明是悟空 - 博客园1

    java.io.File f = new java.io.File("待判定的文本文件名"); try { java.io.InputStream ios = new java.io.FileInputStream(f); byte[] b = new byte[3]; ios.read(b); ios.close(); if (b[0] == -17 && b[1] ...

    java 字符串中文判断

    本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要理解Java中的字符类型`char`。在Java中,一个`char`类型的变量可以存储一个Unicode字符,...

    java 判断汉字 汉字的判断

    ### Java判断字符串是否包含汉字的方法 在开发过程中,有时我们需要判断一个字符串是否包含汉字,并根据判断的结果执行不同的逻辑。这通常出现在需要处理多语言输入的情况下,例如用户输入验证、文本分析等场景。...

    Java 正则表达式判断字符串是否包含中文

    这个范围涵盖了汉字的大部分常用字符集,包括简体和繁体中文。因此,可以通过这个编码范围来编写正则表达式,用以识别和处理中文字符。 #### 三、Java 正则表达式API简介 在 Java 中,主要通过 `java.util.regex` ...

    Java判断文本文件编码格式以及读取

    如果很多时候我们没有约定好文件格式,我们就难以读取文件内容,此时,我们就需要一个工具...返回探测到的字符集编码。可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于 指示是否显示探测过程的详细信息

    java分割文本字符串的方法

    Java分割文本字符串的方法 在Java编程中,文本字符串的分割是非常常见的操作,特别是在数据库字段长度限制的情况下,需要对大文本数据进行截串存取。下面我们将详细介绍Java分割文本字符串的方法,并提供一个实用的...

    2.java字符集.zip

    Java字符集是Java编程语言中处理字符编码的基础概念,它对于理解如何在程序中正确地存储、处理和传输文本至关重要。在Java中,字符集主要指的是Unicode字符集,特别是其子集UTF-8,它是Java默认使用的字符编码。Java...

    Java自动识别文件字符编码工具类.rar

    Java自动识别文件字符编码工具类 参考博客 https://blog.csdn.net/superbeyone/article/details/103036914 使用方式: String encode = EncodingDetect.getFileEncode(geoJsonFile); log.info("系统检测到文件[ {}...

    java文本相似度对比

    SimHash是一种高效的近似近邻搜索算法,通过将文本转化为哈希值并计算这些值之间的汉明距离,来快速判断文本的相似度。这种方法对于大规模数据集尤其适用,因为它能在保持较高准确性的前提下,大大减少计算成本。 ...

    java获取文件编码(判断有无BOM)

    `chardet`库是基于Java的字符集检测工具,它可以分析字节序列并猜测其对应的字符编码。要使用`chardet`,你需要先将其导入到项目中。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;...

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

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

    java读取文件字符集示例方法

    本文将详细介绍如何使用Java来识别和处理文件的字符集,主要关注如何通过代码示例判断文件是采用UTF-8、GBK还是其他字符集。 首先,我们可以看到提供的代码片段中定义了一个名为`getCharset`的方法,该方法接收一个...

    Java判断字符串中是否包含中文方法

    特别是在多语言环境中,我们需要能够判断字符串中是否包含特定的字符集,比如中文字符。由于中文字符在Unicode编码中具有特定的编码范围,我们可以利用这一点来判断字符串中是否包含中文。 首先,了解Unicode编码...

    Java判断文件的编码

    ### Java判断文件编码的方法 在Java开发中,经常会遇到需要处理不同编码格式的文件的情况。为了确保程序能够正确解析文件内容,必须先判断文件的编码格式。本文将详细介绍如何使用Java来判断文件是否为UTF-8或GBK...

    【IT十八掌徐培成】Java基础第09天-005.String-字符集编码.zip

    在IT领域,尤其是在Java编程中,字符集编码是至关重要的概念。这关乎到程序如何处理文本数据,确保信息的正确存储、传输和显示。在Java基础教程中,徐培成老师的"Java基础第09天-005.String-字符集编码"主题深入探讨...

    java判断文件编码或文本流编码的方法宣贯.pdf

    但对于非ASCII字符集,如GBK或UTF-8,文件的开头可能会包含特定的字节序列来标识编码。例如,UTF-8编码的文件,如果以BOM(Byte Order Mark)开始,那么前三个字节的值会是-17(0xEF)、-69(0xBB)和-65(0xBF)。...

    java中常用字符串方法总结

    `getBytes()`将字符串转换为字节数组,`new String(byte[], charset)`根据字符集将字节数组还原为字符串。 18. **判断前缀与后缀** `startsWith(String prefix)`和`endsWith(String suffix)`分别用于检查字符串...

    js java 判断中文,英文的混合长度

    不同于JavaScript,Java提供了更多的编码支持,并且可以直接通过转换字符集的方式来实现长度的计算。这里采用的是将原始字符串先转换为GBK编码,然后再转换回ISO-8859-1编码,以此来计算长度。 #### 2. 代码示例 ``...

    java实现各语种检测的工具,多语种混合的按比例最高的语种返回,中文(zh-cn/zh-tw)、日本语(ja)、韩国语(ko)

    它旨在确定一段文本或一组字符属于哪种语言。这对于信息检索、机器翻译、社交媒体分析等领域有着广泛的应用。 在Java中,实现语种识别通常涉及以下技术: 1. **N-gram模型**:N-gram是连续出现的n个字符序列,常...

    java_character-set.rar_java Character

    Java字符集是编程中不可或缺的一部分,特别是在处理文本和网络数据时。这个名为"java_character-set.rar_java Character"的压缩包包含了一些示例程序,旨在帮助我们深入理解Java中的字符集和编码方式。在这个讨论中...

Global site tag (gtag.js) - Google Analytics