java bom 文件读取_java 读取包含[BOM]位的UTF-8文件

最近在做一个数据共享的项目,在读取UTF-8编码的文件时出现些问题,现记录如下。

UTF-8编码的文件在读取时要格外注意,看其文件开头是否包含[BOM]位。 这个字符一般用来判断该文件是否为UTF-8编码,但Java读取时也会将该判断位一同读出,导致读取的数据与预期不一致。

解决方法如下

import java.io.*;

public class Test1 {

/** 定义BufferReader */

public static BufferedReader openTextFileR(

String fileName

,String charSet

)throws Exception{

return new BufferedReader(

new InputStreamReader(

skipUTF8BOM(

new FileInputStream(

new File(fileName))

,charSet)

,charSet));

}

/** 跳过[BOM]位 */

public static InputStream skipUTF8BOM(

InputStream is

,String charSet

)throws Exception{

if( !charSet.toUpperCase().equals("UTF-8") ) return is;

if( !is.markSupported() ){

// 如果输入流不支持mark功能时,用BufferedInputStream替换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值