小编Run*_*ror的帖子

从可运行的Jar创建Java中的UTF-8文件

我有一个小Java项目,我已经将类文件的属性设置为UTF-8(我使用了许多在默认CP1252上找不到的外来字符).

目标是创建一个包含项列表的文本文件(在Windows中).从Eclipse本身运行类文件时(按Ctrl + F11),它可以完美地创建文件并在另一个编辑器中打开它(我正在使用Notepad ++)我可以看到我想要的字符.

????????????????????????????????????????????????????
?                          Universidade2010 (18/18)?
?                                         hidden: 0?
????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

但是,当我将项目(使用Eclipse)导出为可运行的Jar并使用'javaw -jar project.jar'运行它时,创建的新文件是一堆问号

????????????????????????????????????????????????????
?                          Universidade2010 (19/19)?
?                                         hidden: 0?
????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我已经遵循了一些关于如何使用UTF-8(在Java上默认情况下似乎已经打破)的提示,试图纠正这个问题,所以现在我正在使用

Writer w = new OutputStreamWriter(fos, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

并将BOM标题写入文件,就像已经回答的问题一样,但在导出到Jar时仍然没有运气

我错过了一些属性或命令行命令,因此Java知道我想默认创建UTF-8文件吗?


问题不在于创建文件本身,因为在开发文件时输出正确(使用unicode字符)

创建文件的类现在(并遵循使用Charset类的建议),如下所示:

public class Printer {

    File f;
    FileOutputStream fos;
    Writer w;
    final byte[] utf8_bom = { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF };

    public Printer(String filename){
        f = new File(filename);
        try {
            fos = new FileOutputStream(f);
            w = new OutputStreamWriter(fos, Charset.forName("UTF-8"));
            fos.write(utf8_bom);
        } catch …
Run Code Online (Sandbox Code Playgroud)

java eclipse windows jar utf-8

5
推荐指数
1
解决办法
6475
查看次数

标签 统计

eclipse ×1

jar ×1

java ×1

utf-8 ×1

windows ×1