BufferedReader / Writer无法正常使用Special Chars

时间:2013-12-12 14:34:42

标签: java bufferedreader encryption bufferedwriter

我在Java中遇到CipherBufferedReader/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

这个设置允许Writer写特殊字符,我认为问题不在这里(如果是请告诉我)。 (是的,我已经检查过如果解密而不将其写入文件并再次加载有效并且确实有效。)问题是我无法正确设置BufferedReader,是否有方法或其他写入类型来读取真的很好吗?

2 个答案:

答案 0 :(得分:2)

来自FileWriter javadoc

“用于编写字符文件的便捷类。此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在{{1}上构造OutputStreamWriter }}“。

默认字符集可能是UTF-8。所以,如果你想写ISO-8859-1,你需要做:

FileOutputStream

更重要的是,如果你的目标是将编码的字节放入文件而不做任何改动,那么...

new OutputStreamWriter(new FileOutputStream(file), Charset.forName("ISO-8859-1")) 用于写入字符流。要编写原始字节流,请考虑使用FileWriter。”

答案 1 :(得分:0)

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

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

FileWriter缺少那些......