在写入java文件时添加特殊字符,但在任何地方都不可见

在写入java文件时添加特殊字符,但在任何地方都不可见,java,special-characters,Java,Special Characters,我正在通过 FileWriter fstream = new FileWriter("someFile.java"); BufferedWriter out = new BufferedWriter(fstream); out.write(strContents); // Close the output stream out.close(

我正在通过

               FileWriter fstream = new FileWriter("someFile.java");
                BufferedWriter out = new BufferedWriter(fstream);
                out.write(strContents);
                // Close the output stream
                out.close();
但写完之后,我发现它附加了一些特殊字符,形状像[],但这些特殊字符只在特定的文本编辑器(如EditPlus)中可见


如何在编写时避免使用这些特殊字符,或者只针对某些编辑器。

我的建议是避免完全使用
FileWriter
。它总是使用平台默认编码,这很少是一个好主意


我建议使用
FileOutputStream
包装在
OutputStreamWriter
中,然后只需指定适当的编码,如UTF-8。显然,您仍然需要使用支持UTF-8的编辑器,并且您可能需要告诉它编码。。。但不管操作系统和系统属性如何,至少您的代码总是以相同的方式编写。

我的建议是避免完全使用
FileWriter
。它总是使用平台默认编码,这很少是一个好主意


我建议使用
FileOutputStream
包装在
OutputStreamWriter
中,然后只需指定适当的编码,如UTF-8。显然,您仍然需要使用支持UTF-8的编辑器,并且您可能需要告诉它编码。。。但是,不管操作系统和系统属性如何,至少您会有以相同方式写入的代码。

普通记事本应用程序无法在文件中显示特殊字符writen。您的代码没有任何问题。这是记事本的局限性

普通记事本应用程序无法在文件中显示特殊字符writen。您的代码没有任何问题。这是记事本的局限性

你提到的观点是正确的,只是想知道,我做错了什么。根据Jon Skeet的说法,你应该使用FileOutputStream而不是FileWriter。但它会给你同样的结果。所以你没有做错。你提到的观点是正确的,只是想知道,我做错了什么。根据Jon Skeet的说法,你应该使用FileOutputStream而不是FileWriter。但它会给你同样的结果。所以你没有做错。