我在 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
此设置允许 Writer 写入特殊字符,我认为问题不在这里(如果是,请告诉我)。 (是的,我已经检查过解密而不将其写入文件并再次加载是否有效,并且确实有效。)问题是我无法正确设置 BufferedReader ,有没有办法或其他编写器类型正确读取字符?
最佳答案
“用于写入字 rune 件的便利类。此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在FileOutputStream
。”
默认字符集可能是 UTF-8。所以,如果你想编写 ISO-8859-1,你需要这样做:
new OutputStreamWriter(new FileOutputStream(file), Charset.forName("ISO-8859-1"))
更重要的是,如果您的目标是将编码字节不加更改地放入文件中,那么...
“FileWriter
用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream
。”
关于java - BufferedReader/Writer 使用特殊字符时无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546302/