手机
当前位置:查字典教程网 >编程开发 >Java >java读取文件字符集示例方法
java读取文件字符集示例方法
摘要:复制代码代码如下:publicstaticStringgetCharset(Filefile){Stringcharset="GBK";by...

复制代码 代码如下:

public static String getCharset(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 loc = 0;

while ((read = bis.read()) != -1) {

loc++;

if (read >= 0xF0)

break;

//单独出现BF以下的,也算是GBK

if (0x80 <= read && read <= 0xBF)

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读取文件字符集示例方法】相关文章:

java使用任务架构执行任务调度示例

Java中去除字符串中所有空格的几种方法

java 键盘输入的多种实现方法

java中Filter过滤器处理中文乱码的方法

Java生成随机数的2种示例方法代码

java 全角半角字符转换的方法实例

java mail使用qq邮箱发邮件的配置方法

java正则表达式提取数字的方法实例

java实现fibonacci数列学习示例分享(斐波那契数列)

Java读取Excel文件内容的简单实例

精品推荐
分类导航