Java将文件转换成UTF-8无BOM格式

原创 2018年04月15日 22:36:19

做工程时候,需要用到utf-8无BOM格式的txt文件,所以写了个转换工具类

大致原理是,UTF-8无BOM开头会多几个字节,这个程序把原本文本保存下来,在开头多写入几个字节,再把源文本写回去

package net.forestpolice.lawsearch.utils;

import java.io.*;

public class FileUtils {
    public void turnUTF8withoutBOM(File file, File targetFile) throws IOException {
        if (!targetFile.exists()) {
            targetFile.createNewFile();
        }
        BufferedReader br = null;
        BufferedWriter bw = null;
        br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));
        int i = 0;
        String str = "";
        while ((str = br.readLine()) != null) {
            if (i == 0)//读取第一行,将前三个字节去掉,重新new个String对象
            {
                byte[] bytes = str.getBytes("UTF-8");
                str = new String(bytes, 3, bytes.length - 3);
                bw.write(str+"\r\n");
                i++;
            } else
                bw.write(str+"\r\n");
        }
        br.close();
        bw.close();
    }
}

UTF-8带BOM格式与UTF-8无BOM格式转换

Qt在windows下使用VS建立的工程文件转到Linux环境下编译报出大量错误,反过来也一样,原来是编码的问题。 VS采用UTF-8 BOM格式编码,而Linux下采用UTF-8无BOM格式。BOM...
  • fanyun_01
  • fanyun_01
  • 2017-10-28 19:59:27
  • 1028

利用python将文件转换为utf8 无BOM

如何将一个文件,转换为utf8 无BOM的文件呢;这里使用python做了实现 #!/usr/bin/env python # -*- coding: utf-8 -*- ##############...
  • zhangtaolmq
  • zhangtaolmq
  • 2017-05-19 18:38:51
  • 1143

Java读取带有BOM的UTF-8文件乱码原因及解决办法

 最近在处理文件时发现了同样类型的文件使用的编码可能是不同的。所以想将文件的格式统一一下(因为UTF-8的通用性,决定往UTF-8统一),遇见的第一个问题是:如何查看现有文件的编码方式。 ...
  • css470895871
  • css470895871
  • 2015-07-02 00:13:59
  • 2383

c++转码基础(2):gbk编码文件转换成无bom的utf-8文件实例

#include #include #include #include using namespace std; extern "C" { #include "lua.h" #i...
  • wentianyao
  • wentianyao
  • 2016-09-08 20:52:42
  • 940

UTF-8格式编码与UTF-8无BOM格式编码的区别(包括java文件)

BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字...
  • fhzaitian
  • fhzaitian
  • 2016-05-25 09:07:51
  • 5103

Java正确判别出文件的字符集(尤其是UTF-8(无BOM)和GBK的判断)

最近在项目开发过程中遇到一个编码上的问题,原流程是用户上传csv数据并对数据入库。我们不知道用户会使用哪种编码的格式进行文件上传,而直接规定用户必须使用固定编码进行上传又感觉不够友好。所以需要我们程序...
  • dongping8887
  • dongping8887
  • 2018-01-13 19:22:23
  • 288

Java正确判别出文件的字符集(尤其是带BOM和不带BOM的UTF-8字符)

前几天在项目中需要读取用户上传过来的txt文件,但不确定txt文件的字符集 UTF-16、UTF-8(带BOM)、Unicode可以根据前三个字节区别    public String getT...
  • oicqxiesidilieric
  • oicqxiesidilieric
  • 2013-01-04 14:57:50
  • 8041

Learning Python 016 写文件时,将其用指定的编码方式保存(比如:UTF-8无BOM编码方式)

使用的电脑系统:Windows 10 64位 使用的开发集成环境:PyCharm 2016.1.4 使用的Python的版本:python 3.5.0 学习这个知识点的原因举一个实例:Octopres...
  • github_35160620
  • github_35160620
  • 2016-11-29 20:19:53
  • 10102

【分享】Android Studio专用文件转换工具:把ANSI文件批量另存为无BOM的UTF-8文件

【分享】Android Studio专用文件转换工具:把ANSI文件批量另存为无BOM的UTF-8文件 在Andoird Studio下编译java文件时,经常会出现像下面的错误: Error:(2...
  • yangzhenping
  • yangzhenping
  • 2015-11-28 18:16:41
  • 4159

生成不带签名(BOM)的UTF8格式的XML

生成XML的一种方法如下: using System.Xml; private void SaveXML(string savePath) { XmlWriterSettings se...
  • doris_d
  • doris_d
  • 2014-06-26 14:15:38
  • 1155
收藏助手
不良信息举报
您举报文章:Java将文件转换成UTF-8无BOM格式
举报原因:
原因补充:

(最多只允许输入30个字)