- 浏览: 250513 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
package com.roadway.edmail.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public class FileEncodeReferee
{
private File file;
public FileEncodeReferee(File file)
{
this.file = file;
}
public FileEncodeReferee(String path)
{
file = new File(path);
}
public String getCharset()
{
File file = this.file;
String charset = "GBK";
byte[] first3Bytes = new byte[3];
BufferedInputStream bis = null;
try
{
//boolean checked = false;
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 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)); }
******************************************************************/
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (bis != null)
{
try
{
bis.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
return charset;
}
public static void main(String[] args)
{
FileEncodeReferee fer = new FileEncodeReferee("E://Huha.csv");
System.out.println(fer.getCharset());
}
}
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public class FileEncodeReferee
{
private File file;
public FileEncodeReferee(File file)
{
this.file = file;
}
public FileEncodeReferee(String path)
{
file = new File(path);
}
public String getCharset()
{
File file = this.file;
String charset = "GBK";
byte[] first3Bytes = new byte[3];
BufferedInputStream bis = null;
try
{
//boolean checked = false;
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 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)); }
******************************************************************/
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (bis != null)
{
try
{
bis.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
return charset;
}
public static void main(String[] args)
{
FileEncodeReferee fer = new FileEncodeReferee("E://Huha.csv");
System.out.println(fer.getCharset());
}
}
发表评论
-
一刻钟精通正则表达式(转)
2007-11-07 11:23 867想必很多人都对正则表达式都头疼。今天,我以我的 ... -
Map、ArrayList 的遍历
2007-11-08 12:50 817public static void main(String[ ... -
Hibernate 连接池
2007-11-16 16:50 715<session-factory> < ... -
Hibernate检索对象的方式
2007-11-23 11:23 600Hibernate检索对象的方式 ... -
再温java jkd 环境变量设置
2007-12-04 15:16 875JAVA_HOME: C:\Program Files ... -
JAVA之路(转)
2007-12-04 18:12 623很多网友问我学习Java有 ... -
JMail
2007-12-05 10:42 866一.创建html格式的邮件 ... -
JAVA 检测网络是否为连通状态 ping
2007-12-07 19:27 2495要用java检测网络资源是否可用,我们可以采用以下两种方法: ... -
JMail 异常: java.lang.NoClassDefFoundError: javax/activation/DataSource
2007-12-11 16:56 2781今天开发邮件系统,发送程序能在main函数中顺利运行. ... -
JAVA 常用正则表达试
2007-12-11 21:21 797"^\d+$" //非负整数(正整数 + ... -
Linux - Tomcat
2007-12-14 18:36 7501.使用ps -ax | grep tomcat可以查询出内存 ... -
有返回值 存储过程 的 调用
2007-12-18 20:03 719有返回值的存储过程的调用方法如下: public class ... -
ECLIPS 经典 快键
2007-12-21 11:42 756Ctrl+1 快速修复(最经典的快捷键,就不用多说了) ... -
eclips 恢复 误删文件
2007-12-23 13:25 773今天,把我差点气死了,一不小心误删了很多重要文件. 后来才到网 ... -
JSP 统计在线人数
2007-12-24 10:39 725package com.test;import javax. ... -
The Software Engineer
2007-12-24 13:40 589http://siyn.iteye.com/ http://w ... -
Summarization of web project
2007-12-27 09:37 635开始一个web项目前应该注意一些什么?就自己的开发 ... -
正则表达式--2
2008-01-02 16:19 619正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总 ... -
java 正则表达式 长期总结
2008-01-03 18:46 717匹配文件后缀名:Pattern.matches("^ ... -
Test
2008-01-07 16:08 754package com.ed.cnc.servletListe ...
相关推荐
在Java编程中,判断文件编码格式是一项常见的任务,特别是在处理包含多国语言或者用户自定义内容的文件时。本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用...
如果很多时候我们没有约定好文件格式,我们就难以读取文件内容,此时,我们就需要一个工具来探测所读文本的编码格式,此工具可以允许用户读取诸如utf-8,gbk,gb2312一类的文件格式。内置了一些常用的探测实现类,...
### Java判断文件编码的方法 在Java开发中,经常会遇到需要处理不同编码格式的文件的情况。为了确保程序能够正确解析文件内容,必须先判断文件的编码格式。本文将详细介绍如何使用Java来判断文件是否为UTF-8或GBK...
前者适用于有限的编码格式,后者则提供了更全面的解决方案,适用于各种场景,尤其是处理用户上传或不可控来源的文本文件时。在实际开发中,可以根据项目需求选择合适的方法来确定文件的编码格式。
在Java编程中,处理文件编码是一项常见的任务,特别是在读取、写入或转换文本文件时。文件编码决定了字符集的表示方式,而BOM(Byte Order Mark)则是一种特殊的Unicode标记,用于标识文件的编码类型。本文将详细...
本文档旨在教导读者如何通过Java编程语言来判断文件的编码类型。这包括常见的编码格式如GBK、UTF-8等。了解文件编码对于处理多语言环境下的文本数据至关重要。 #### 详细知识点解析 ##### 文件编码类型简介 文件...
Java编程语言在处理文本文件时,常常需要确定文件的字符编码格式,以便正确地读取和解析文件内容。`cpdetector_1.0.10.jar` 是一个第三方工具包,专为Java开发者设计,用于检测文件的编码类型。这个工具包能够帮助...
本资源主要关注如何判断一个文本文件是否采用UTF-8编码。 在Windows系统中,比如Windows 7旗舰版,我们经常使用Notepad.exe(记事本)来查看和编辑文本文件。在编程环境中,有时候我们需要编写代码来检查文件的编码...
首先,创建CSV文件的基本过程涉及将数据写入具有特定分隔符(通常是逗号)的文本文件中。在Java中,我们可以使用内置的`java.io`或Apache Commons CSV库来实现。Apache Commons CSV提供了一套强大的API,能够轻松...
在Java编程语言中,获取文件编码是一个常见的任务,特别是在处理文本文件时,了解正确的编码格式至关重要,因为不同的编码方式会影响字符的表示和解析。本文将深入探讨如何在Java中识别和处理不同类型的文本编码,如...
在Java编程语言中,识别文件编码格式是一项重要的任务,特别是在处理不同来源的文本文件时。在没有第三方JAR包的情况下,我们通常需要依赖Java内置的API来实现这一功能。以下是一些关键知识点: 1. **字符编码**:...
本文提供了 Java 读取 TXT 文本文件乱码解决方案,并讨论了 TXT 文件的编码格式和获取编码格式的方法。 知识点: * Java 读取 TXT 文本文件时可能出现乱码的问题 *乱码的问题是由于文件的编码格式引起的 * 使用 ...
Java自动识别文件字符编码工具类 参考博客 https://blog.csdn.net/superbeyone/article/details/103036914 使用方式: String encode = EncodingDetect.getFileEncode(geoJsonFile); log.info("系统检测到文件[ {}...
通过使用cpdetector库,开发者可以更准确地判断各种未知编码的文本文件,提高了程序的兼容性和健壮性。 总的来说,Java中判断文件编码的方法包括简单的字节匹配和使用第三方库进行智能检测。在实际开发中,根据项目...
NULL 博文链接:https://zhifeiji512.iteye.com/blog/1221068
"Java 自动识别编码"这个主题涉及到的是Java编程语言如何自动检测文本文件或数据流的字符编码方式,以便正确地读取和解析其中的内容。下面将详细探讨这个知识点。 首先,Java中的`Charset`类是处理字符编码的基础,...
Recognize类判定指定文本文件为UTF-8还是GBK编码格式。
而统计字符频率和比较编码表则是通过分析文件中的字符出现的频率,与已知编码的字符频率分布进行对比,以判断最可能的编码类型。 3. 批量编码转换的实现: 这个工具首先遍历指定的文件或文件夹,对每个文件应用...
二进制文件与文本文件的主要区别在于它们的数据存储方式:二进制文件通常包含非打印字符,如图像、音频、视频等非文本数据,而文本文件则由可读的字符组成,如ASCII或Unicode编码的字符。 上述代码提供了一个简单的...