发现依赖于默认编码
我从FindBugs得到下面的bug,
在MyClass.print(String)中find对默认编码的依赖:String.getBytes()
方法
protected void print (String str) { { private OutputStream outStream = null; ..... outStream.write(str.getBytes()); ....... }
请让我知道是什么错误? 我们如何解决这个问题?
提前致谢
将string编码为字节有不同的方法 – 字符集确定编码。 如果你不指定一个字符集,就像在你对str.getBytes()的调用中一样,它使用系统默认值。
FindBugs正在警告你,因为你应该考虑你想用什么编码来输出。 如果你正在写一个文件,该文件的读者有什么期望? 如果你可以为文件指定一个明确的编码是最安全的,所以你不要用一种方式写它并以另一种方式读取它。
要指定一个明确的字符集,例如,使用str.getBytes(Charset.forName("UTF-8"))
。 UTF-8是一个不错的select,因为它总是被支持,并且可以编码任何字符。
例如,.properties文件始终是ISO 8859-1(即Latin-1)。 这是logging在案,所以围绕什么编码使用没有歧义。