Java BufferedReader/Writer无法正确使用特殊字符

Java BufferedReader/Writer无法正确使用特殊字符,java,bufferedreader,encryption,bufferedwriter,Java,Bufferedreader,Encryption,Bufferedwriter,我在Java中的Cipher和BufferedReader/Writer遇到了一个小问题。一切都很好,如果有人想要我的代码,我可以发布它,如果你想。问题是,如果我尝试将加密字节转换为字符串(工作正常),然后使用BufferedWriter使用以下设置将其写入文件: FileWriter fwrit = new FileWriter(file); BufferedWriter buffwrit = new BufferedWriter(fwrit); //The writer itself

我在Java中的
Cipher
BufferedReader/Writer
遇到了一个小问题。一切都很好,如果有人想要我的代码,我可以发布它,如果你想。问题是,如果我尝试将加密字节转换为字符串(工作正常),然后使用
BufferedWriter
使用以下设置将其写入文件:

    FileWriter fwrit = new FileWriter(file);
BufferedWriter buffwrit = new BufferedWriter(fwrit); //The writer itself
String encTextString = new String(encText,"ISO-8859-1"); //The String that gets written later

这个设置允许编写器编写特殊字符,我认为问题不在这里(如果是,请告诉我)。(是的,我已经检查了在不将其写入文件并再次加载的情况下进行解密是否有效,它是否确实有效。)问题是我无法正确设置
BufferedReader
,是否有方法或其他writertype可以正确读取字符?

最好不要使用FileWriter,该类只是将FileOutputStream包装到OutputStreamWriter中的一个方便类

OutputStreamWriter具有使用特定编码对非ascii字符进行编码的构造函数

FileWriter缺少以下内容….

用于写入字符文件的便利类。此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在
文件输出流
上构造一个
OutputStreamWriter

默认字符集可能是UTF-8。因此,如果您想编写ISO-8859-1,您需要执行以下操作:

new OutputStreamWriter(new FileOutputStream(file), Charset.forName("ISO-8859-1"))
不过,更重要的是,如果您的目标是将编码的字节不经更改地放入文件中,那么


< > >代码>文件写入器< /C>是用于编写字符流的。为了编写原始字节流,请考虑使用<代码>文件输出流< /> >“

这是否是可能的副本?”不久前,我已经尝试过那个问题中的建议,但对我来说不起作用。正如拉塞尔所建议的,你尝试过OutputStreamWriter吗?仍然有一些问题。我使用了你的方法和相同的ISO-8859-1编码。结果:写下的东西:[B@16d19d73E�Z�9�� 读到的东西:E?z?9[B@5ccc078like此?BufferedWriter buffwrit=新的BufferedWriter(新的OutputStreamWriter(新文件OutputStream(文件),“ISO-8859-1”);