`
yzz9i
  • 浏览: 221488 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

上传的TXT文件编码怎么获得 有方法

阅读更多
/**
* 上传文件编码判断
* */
public static String get_charset( File file ) {  
        String charset = "GBK";  
        byte[] first3Bytes = new byte[3];  
        try {  
            boolean checked=false;;  
            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;  
    }  
分享到:
评论

相关推荐

    ajax上传文件

    下面我们将深入探讨Ajax上传文件的核心原理、实现方法以及相关的JavaScript插件。 一、Ajax(异步JavaScript和XML)简介 Ajax并不是一个单一的技术,而是一种利用多种现有技术(如JavaScript、XML、HTML、CSS等)来...

    SAS EG导入UTF-8编码的文本数据文件时的乱码问题解决方法

    有时候,文件可能没有正确标记编码,或者误标记了其他编码。 2. 在导入数据之前,了解并确认SAS EG对UTF-8编码的支持情况。SAS EG通常能够识别和正确处理UTF-8编码,但处理非英文字符时,有时需要手动设置。 3. ...

    java web接收上传文件服务器端示例

    6. **文件编码问题**:在描述中提到,参数传递时中文可能会乱码,但文件不会。这是因为在HTTP请求中,URL编码和表单数据编码不同。文件内容通常不涉及字符编码,而表单数据(包括文件名)可能需要正确设置字符集。在...

    txt转换wav工具

    用户只需上传TXT文件,选择合适的语音选项(如语速、音色等),然后点击转换,即可得到对应的WAV音频文件。 此外,这样的工具可能还支持多种语言,以满足不同用户的需要。对于有特定需求的用户,例如需要特定地区...

    java结合jsp写的上传文件代码

    // 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 fileItem = ...

    C#演示以流式方式读写Txt文本文件

    上述代码创建了一个StreamReader实例,然后通过ReadLine()方法逐行读取文本文件内容。使用using语句确保了资源在使用完毕后得到妥善释放。 写入TXT文本文件则可以借助StreamWriter类。下面的代码展示了如何向文件...

    用asp实习的无组件上传模块

    在“aspsun.com--readme.txt”文件中,可能会包含有关此上传模块的详细说明,包括如何配置、如何使用以及可能遇到的问题和解决方法。而“aspsun.com”可能是一个示例的ASP文件,展示了实际的代码实现。 总的来说,...

    Jsp文件上传下载(工具类源码)

    // 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 ...

    base编码证书转化为der证书/源码/工具

    3. 转换编码:由于Base64编码的证书实质上是ASN.1 DER编码的,所以解码后直接保存为二进制文件,就得到了DER格式的证书。 在Java环境中,我们可以使用`java.util.Base64`类进行Base64解码,然后将解码后的字节数组...

    (第14讲) PHP上传原理及应用

    如果文件确实是通过上传得到的,函数将返回`true`,否则返回`false`。 文件上传过程中还需要注意以下几点: - **文件大小限制**:PHP有默认的上传文件大小限制,可以通过修改`php.ini`中的`upload_max_filesize`和`...

    Java中获取文件路径的几种方式

    本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 #### 绝对路径 绝对路径是指从根目录开始,到目标文件或目录的完整路径。例如,在Windows系统中,`C:\Users\...

    JPEG.rar_jpeg_jpeg 源码_jpeg 编码 _jpeg编码

    这些编码方法利用数据的概率特性,将更可能出现的符号编码为更短的位序列,减少存储空间。 此外,JPEG标准还支持颜色空间转换,例如从RGB(红绿蓝)转换到YCbCr,其中Y表示亮度,Cb和Cr表示色度。这样做是因为人眼...

    java如何实现判断文件的真实类型

    Java判断文件真实类型依靠的是文件的头部编码信息。 一、文件头信息 文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的...

    p2p文件传送原理及代码

    **P2P(对等网络)文件传输原理** P2P(Peerto Peer)是一种分布式网络架构,其中每个节点既是客户端也是...提供的"www.pudn.com.txt"和"source"可能是源代码或相关文档,对于学习P2P文件传输的具体实现有很大帮助。

    代码检查 CheckStyle-IDEA 新增优化后Code Check文件

    在描述中提到,为了克服因网络限制导致的插件下载困难,这里提供了一种本地加载优化后的Code Check文件的方法。 首先,`CheckStyle-IDEA-5.23.0.zip`是CheckStyle插件的一个特定版本,适用于IntelliJ IDEA。这个...

    UMD TXT互转

    2. **文件兼容性**:UMD TXT互转工具需要能处理不同编码的TXT文件,同时支持多种版本和类型的UMD文件,确保转换后的内容完整无误。 3. **转换速度与效率**:高效的转换工具能在短时间内完成大量文件的转换,这对于...

    ctf题库 CTF理论考核题及答案

    1. **文件扩展名**:文件扩展名是标识文件类型的重要部分,例如在`readme.txt`中,`.txt`是扩展名,它告诉操作系统如何处理这个文件。选项C是正确答案。 2. **HTML语言**:HTML(HyperText Markup Language)是一种...

    PHP多图片上传程序开源源码v2.4.3

    1. jb51.net.txt:可能是一个文本文件,可能包含了有关该PHP多图片上传程序的使用教程、注意事项或其他相关信息,来源于jb51.net,一个提供各种编程教程和技术资料的网站。 2. 服务器软件.url:这是一个快捷方式文件...

    易语言文件传送客户端_1源码,易语言文件传送服务器_1源码,易语言

    通过分析这个压缩包中的"说明.htm"、"易采源码下载说明.txt"和"易采源码下载.url"文件,我们可以得到更具体的使用指南和下载链接,帮助我们理解和使用这套源码。"易语言超大文件传输源码"文件则包含了实际的代码实现...

    txt阅读器Android项目.rar

    描述中的“txt阅读器Android项目.rar”再次强调了这是一个针对Android平台的TXT文件阅读器项目,通过解压rar文件,我们可以获得该项目的完整开发源码,这对于学习Android应用开发,尤其是阅读类应用的开发人员来说,...

Global site tag (gtag.js) - Google Analytics