Просматривая JCA 1.7 specification я смог найти только в одном из своих примеров на адаптер ресурсов Deployment Descriptor следующее (Глава 13: Сообщение Приток P 13-50): Этот пример показывает использование UTF-8 кодирования, однако нет ничего говоря, что это был необязательный выбор для иллюстрации примера или ограничения на кодировку символа файла.Какова должна быть кодировка символов дескриптора развертывания JCA (ra.xml)?
Я спрашиваю это потому, что я пишу программу Java, чтобы прочитать один из этих файлов и FindBugs™ дает мне это сообщение:
DM_DEFAULT_ENCODING: Reliance на кодировку по умолчанию Найдено вызов метода который будет выполнять преобразование байта в строку String (или String by byte), и предположим, что кодировка по умолчанию подходит. Это приведет к изменению поведения приложения . Используйте альтернативный API и явным образом задайте заголовок или объект Charset.
линия 4 в этом фрагменте кода Java, где будет указана кодировка символов:
01. byte[] contents = new byte[1024];
02. int bytesRead = 0;
03. while ((bytesRead = bin.read(contents)) != -1)
04. result.append(new String(contents, 0, bytesRead));
Итак, можно ли указать ожидаемую кодировку этого файла в этом случае или нет?
UTF-8 хорошо. Можете ли вы показать код, в котором вы получаете предупреждение FindBugs? –
@Thomas Это не о том, что UTF-8 является хорошим или плохим :) Это больше о том, может ли пользователь указать другую кодировку символов или нет. Я привел пример кода для вашего удобства. –
Предупреждение FindBugs должно исчезнуть, если вы используете 'new String (содержимое, 0, bytesRead, StandardCharsets.UTF_8)'. Вы должны указать ту же кодировку в заголовке XML и в коде. Я не знаю ограничения, которое говорит, что вы * должны использовать UTF-8. –