Подтвердить что ты не робот

Найденная зависимость от кодировки по умолчанию

Я получаю ниже ошибку от FindBugs,

Найдена зависимость от кодировки по умолчанию в MyClass.print(String): String.getBytes()

Метод

protected void print (String str) {
{
private OutputStream outStream = null;
.....
outStream.write(str.getBytes());
.......
}

Пожалуйста, дайте мне знать, что такое ошибка? как мы можем это решить?

Заранее спасибо

4b9b3361

Ответ 1

Существуют разные способы кодирования строки в виде байтов - кодировка определяет эту кодировку. Если вы не укажете кодировку, как в вашем вызове str.getBytes(), она использует системную умолчанию.

FindBugs предупреждает вас об этом, потому что вы должны подумать о том, какую кодировку вы хотите использовать для своего вывода. Если вы пишете файл, что ожидают читатели этого файла? Это безопаснее, если вы можете указать явное кодирование для файла, чтобы вы не записывали его в одну сторону и читали его по-другому.

Чтобы указать явную кодировку, используйте str.getBytes(Charset.forName("UTF-8")), например. UTF-8 - хороший выбор, потому что он всегда поддерживается и может кодировать любой символ.

Например, файлы .properties всегда соответствуют стандарту ISO 8859-1 (т.е. Latin-1). Это документировано, поэтому нет никакой двусмысленности в отношении того, какую кодировку использовать.