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