`
starbhhc
  • 浏览: 660603 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

判断文件编码

    博客分类:
  • I18N
 
阅读更多
public static String get_charset( File file ) {   
        String charset = "GBK";   
        byte[] first3Bytes = new byte[3];   
        try {   
            boolean;   
            BufferedInputStream bis = new BufferedInputStream( new FileInputStream( file ) );   
            bis.mark( 0 );   
            int read = bis.read( first3Bytes, 0, 3 );   
            if ( read == -1 ) return charset;   
            if ( first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE ) {   
                charset = "UTF-16LE";   
                checked = true;   
            }   
            else if ( first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF ) {   
                charset = "UTF-16BE";   
                checked = true;   
            }   
            else if ( first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF ) {   
                charset = "UTF-8";   
                checked = true;   
            }   
            bis.reset();   
            if ( !checked ) {   
            //    int len = 0;   
                int loc = 0;   
  
                while ( (read = bis.read()) != -1 ) {   
                    loc++;   
                    if ( read >= 0xF0 ) break;   
                    if ( 0x80 <= read && read <= 0xBF ) // 单独出现BF以下的,也算是GBK   
                    break;   
                    if ( 0xC0 <= read && read <= 0xDF ) {   
                        read = bis.read();   
                        if ( 0x80 <= read && read <= 0xBF ) // 双字节 (0xC0 - 0xDF) (0x80   
                                                                        // - 0xBF),也可能在GB编码内   
                        continue;   
                        else break;   
                    }   
                    else if ( 0xE0 <= read && read <= 0xEF ) {// 也有可能出错,但是几率较小   
                        read = bis.read();   
                        if ( 0x80 <= read && read <= 0xBF ) {   
                            read = bis.read();   
                            if ( 0x80 <= read && read <= 0xBF ) {   
                                charset = "UTF-8";   
                                break;   
                            }   
                            else break;   
                        }   
                        else break;   
                    }   
                }   
                //System.out.println( loc + " " + Integer.toHexString( read ) );   
            }   
  
            bis.close();   
        } catch ( Exception e ) {   
            e.printStackTrace();   
        }   
  
        return charset;   
    }   
分享到:
评论

相关推荐

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

    在Java编程中,判断文件编码格式是一项常见的任务,特别是在处理包含多国语言或者用户自定义内容的文件时。本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用...

    java判断文件编码

    在Java编程中,判断文件编码是一项重要的任务,尤其是在处理用户上传的文件或处理不同系统间的文件传输时。本文将深入探讨如何使用Java进行文件编码的检测,并基于提供的资源——`cpdetector_1.0.5.jar`、`chardet....

    Java判断文件的编码

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

    java程序判断文件编码的类型

    ### Java程序判断文件编码的类型 #### 知识点概览 本文档旨在教导读者如何通过Java编程语言来判断文件的编码类型。这包括常见的编码格式如GBK、UTF-8等。了解文件编码对于处理多语言环境下的文本数据至关重要。 ##...

    java判断文件编码格式 三方工具包 cpdetector_1.0.10.jar

    总的来说,`cpdetector_1.0.10.jar`是Java开发中的一个实用工具,它提供了高效且准确的文件编码检测功能,帮助开发者更好地处理文本数据,避免因编码问题而引发的程序异常。通过理解并熟练使用这类工具,可以提升...

    判断文件编码格式和批量将gbk转为utf-8

    标题"判断文件编码格式和批量将gbk转为utf-8"涉及两个主要知识点: 1. **文件编码识别**:判断文件编码格式通常是为了确保正确读取和处理文件内容。这可以通过各种工具或编程库实现。例如,Python中的`chardet`库...

    文件操作工具类,包含判断文件编码适合windows和linux,文件压缩打包,判断文件格式,拷贝文件等内容

    文件操作工具类,包含判断文件编码适合windows和linux,文件压缩打包,判断文件格式,拷贝文件等内容

    判断字符编码格式代码

    - **文件处理**:读取外部文件时,需要判断文件的编码格式以正确解析内容。 - **多语言支持**:在开发国际化应用时,根据不同语言环境动态选择合适的编码格式。 通过以上分析,我们不仅了解了字符编码的基本概念...

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

    以下将详细介绍如何在Java中进行文件编码的判断。 首先,基本的判断方法是通过读取文件的前三个字节来识别编码格式。ASCII码文本通常不涉及这个问题,因为ASCII只包含128个字符,可以用单字节表示。但对于非ASCII...

    JScript中使用ADODB.Stream判断文件编码的代码

    在JScript中判断文件编码主要涉及到使用ADODB.Stream对象来处理文件的二进制数据。在VBS(Visual Basic Script)中,我们通常可以通过ASC函数等手段来判断文件的编码,但在JScript中由于没有这些函数,所以需要采取...

    python中判断文件编码的chardet(实例讲解)

    ### Python中判断文件编码的Chardet库详解 #### 一、引言 在处理文本文件时,经常会遇到不同编码格式的文件。Python提供了一种简单有效的方式来检测这些文件的编码格式,即通过使用`chardet`库。本文将详细介绍...

    判断文件是否为utf-8的编码格式

    一个判断文件为utf-8的java类,自己用有限状态机实现的,很好用的。

    C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)

    以下是获取文件编码的一个类: using System; using System.IO; using System.Text; /// /// FileEncoding 的摘要说明 /// namespace FileEncoding { /// /// 获取文件的编码格式 /// public class Encoding...

    C# 编码自动识别 匹配文件当前编码格式

    为了自动识别文件的编码格式,我们需要编写一个程序,它能够读取文件的前几个字节(通常为2或4个字节),然后根据这些字节的值来判断可能的编码。这个过程称为"字节顺序标记"(BOM)检测,或者对于无BOM的编码,通过...

    javascript 判断是否GBK编码

    在JavaScript中,判断一个字符串是否属于GBK编码是一个常见的需求,特别是在处理中文字符集时。GBK是GB2312的扩展,包含了更多的汉字和其他字符,是Windows系统中广泛使用的中文编码标准。本篇将深入探讨如何通过...

    java判断编码方式

    总之,Java中判断文件编码的方式多样,可以根据具体场景选择合适的方法。需要注意的是,这些方法都有其局限性,特别是对于没有BOM且包含混合字符集的文件,可能会比较困难。因此,最好的实践是在创建文件或数据时就...

    获取文件编码格式与文件转码

    在IT行业中,尤其是在Android开发中,处理文件编码格式与文件转码是常见的任务。编码格式决定了文本文件中字符的表示方式,不同的编码如ASCII、UTF-8、GBK等有着不同的规则。了解并能够正确处理文件编码对于确保程序...

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

    本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是BOM。BOM是UTF-8、UTF-16和UTF-32等编码格式中的一个可选标记,用于告知解析器文件的编码类型。例如,UTF-8的BOM是三...

    java文件字符编码集判断依赖.zip

    通用的文件字符编码集判断需要借助第三方包...使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段代码供测试~~

    Java判定文件编码或文本流编码的方法[文].pdf

    2. **判断文件编码的基本原理**:通常,文件的编码信息可能存储在文件的前几个字节中。例如,UTF-8编码的文件,如果以字节序的方式查看,前三个字节应该是特定的二进制值(对应十进制为-17、-69、-65)。通过读取并...

Global site tag (gtag.js) - Google Analytics