/**
* 上传文件编码判断
* */
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上传文件的核心原理、实现方法以及相关的JavaScript插件。 一、Ajax(异步JavaScript和XML)简介 Ajax并不是一个单一的技术,而是一种利用多种现有技术(如JavaScript、XML、HTML、CSS等)来...
有时候,文件可能没有正确标记编码,或者误标记了其他编码。 2. 在导入数据之前,了解并确认SAS EG对UTF-8编码的支持情况。SAS EG通常能够识别和正确处理UTF-8编码,但处理非英文字符时,有时需要手动设置。 3. ...
6. **文件编码问题**:在描述中提到,参数传递时中文可能会乱码,但文件不会。这是因为在HTTP请求中,URL编码和表单数据编码不同。文件内容通常不涉及字符编码,而表单数据(包括文件名)可能需要正确设置字符集。在...
用户只需上传TXT文件,选择合适的语音选项(如语速、音色等),然后点击转换,即可得到对应的WAV音频文件。 此外,这样的工具可能还支持多种语言,以满足不同用户的需要。对于有特定需求的用户,例如需要特定地区...
// 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 fileItem = ...
上述代码创建了一个StreamReader实例,然后通过ReadLine()方法逐行读取文本文件内容。使用using语句确保了资源在使用完毕后得到妥善释放。 写入TXT文本文件则可以借助StreamWriter类。下面的代码展示了如何向文件...
在“aspsun.com--readme.txt”文件中,可能会包含有关此上传模块的详细说明,包括如何配置、如何使用以及可能遇到的问题和解决方法。而“aspsun.com”可能是一个示例的ASP文件,展示了实际的代码实现。 总的来说,...
// 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 ...
3. 转换编码:由于Base64编码的证书实质上是ASN.1 DER编码的,所以解码后直接保存为二进制文件,就得到了DER格式的证书。 在Java环境中,我们可以使用`java.util.Base64`类进行Base64解码,然后将解码后的字节数组...
如果文件确实是通过上传得到的,函数将返回`true`,否则返回`false`。 文件上传过程中还需要注意以下几点: - **文件大小限制**:PHP有默认的上传文件大小限制,可以通过修改`php.ini`中的`upload_max_filesize`和`...
本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 #### 绝对路径 绝对路径是指从根目录开始,到目标文件或目录的完整路径。例如,在Windows系统中,`C:\Users\...
这些编码方法利用数据的概率特性,将更可能出现的符号编码为更短的位序列,减少存储空间。 此外,JPEG标准还支持颜色空间转换,例如从RGB(红绿蓝)转换到YCbCr,其中Y表示亮度,Cb和Cr表示色度。这样做是因为人眼...
Java判断文件真实类型依靠的是文件的头部编码信息。 一、文件头信息 文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的...
**P2P(对等网络)文件传输原理** P2P(Peerto Peer)是一种分布式网络架构,其中每个节点既是客户端也是...提供的"www.pudn.com.txt"和"source"可能是源代码或相关文档,对于学习P2P文件传输的具体实现有很大帮助。
在描述中提到,为了克服因网络限制导致的插件下载困难,这里提供了一种本地加载优化后的Code Check文件的方法。 首先,`CheckStyle-IDEA-5.23.0.zip`是CheckStyle插件的一个特定版本,适用于IntelliJ IDEA。这个...
2. **文件兼容性**:UMD TXT互转工具需要能处理不同编码的TXT文件,同时支持多种版本和类型的UMD文件,确保转换后的内容完整无误。 3. **转换速度与效率**:高效的转换工具能在短时间内完成大量文件的转换,这对于...
1. **文件扩展名**:文件扩展名是标识文件类型的重要部分,例如在`readme.txt`中,`.txt`是扩展名,它告诉操作系统如何处理这个文件。选项C是正确答案。 2. **HTML语言**:HTML(HyperText Markup Language)是一种...
1. jb51.net.txt:可能是一个文本文件,可能包含了有关该PHP多图片上传程序的使用教程、注意事项或其他相关信息,来源于jb51.net,一个提供各种编程教程和技术资料的网站。 2. 服务器软件.url:这是一个快捷方式文件...
通过分析这个压缩包中的"说明.htm"、"易采源码下载说明.txt"和"易采源码下载.url"文件,我们可以得到更具体的使用指南和下载链接,帮助我们理解和使用这套源码。"易语言超大文件传输源码"文件则包含了实际的代码实现...
描述中的“txt阅读器Android项目.rar”再次强调了这是一个针对Android平台的TXT文件阅读器项目,通过解压rar文件,我们可以获得该项目的完整开发源码,这对于学习Android应用开发,尤其是阅读类应用的开发人员来说,...