我有一个小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)