Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java更改现有文件的编码?_Java_File_Encoding - Fatal编程技术网

用Java更改现有文件的编码?

用Java更改现有文件的编码?,java,file,encoding,Java,File,Encoding,我需要通过编程将一组*nix脚本的编码从Java更改为UTF-8。我不会给他们写任何东西,所以我正试图找到最简单、最快的方法。文件不是太多,也不是那么大。我可以: 使用设置为UTF-8编码的OutputStream“写入”空字符串 因为我已经在使用FileUtils(来自ApacheCommons),所以我可以读写这些文件的内容,并将UTF-8作为编码传递 没什么大不了的,但是以前有人碰到过这个案子吗?这两种方法都有缺点吗?根据要求,由于您使用的是commons io,下面是示例代码(对风进

我需要通过编程将一组*nix脚本的编码从Java更改为UTF-8。我不会给他们写任何东西,所以我正试图找到最简单、最快的方法。文件不是太多,也不是那么大。我可以:

  • 使用设置为UTF-8编码的OutputStream“写入”空字符串
  • 因为我已经在使用FileUtils(来自ApacheCommons),所以我可以读写这些文件的内容,并将UTF-8作为编码传递

没什么大不了的,但是以前有人碰到过这个案子吗?这两种方法都有缺点吗?

根据要求,由于您使用的是commons io,下面是示例代码(对风进行错误检查):


必须读取和重新写入整个文件,但不需要初始BOM的普通7位干净ASCII文件(以及类似文件)除外。BOM将改变流以及任何编码更改。但Unix默认编码是UTF-8,我相信。脚本的编码是什么。@user384706也许更合适的说法是,许多“文本”应用程序将非BOM流视为UTF-8。。。“默认编码”更适合于与特定语言/库/API相关的讨论。ISO-8859-1附带了脚本@pst感谢您澄清选项1不是一个选项:)@pst插入一个答案,这样我们就可以从未回答的列表中得到这个答案是
UTF-8
必要的吗?我认为Java的默认编码是
UTF-8
无论如何,这里有几点要说。首先,默认值不太可能是utf8,其次,因为这段代码都是关于编码的,所以最好是显式的。警告:由于某些原因,此操作会剪切超过几KB的文件,实质上是删除超过某一点的文件内容
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class Main {
    public static void main(String[] args) throws IOException {
        String filename = args[0];
        File file = new File(filename);
        String content = FileUtils.readFileToString(file, "ISO8859_1");
        FileUtils.write(file, content, "UTF-8");
    }
}