Строки Java всегда внутренне UTF-16. Вам действительно нужно обратить внимание на кодировки, когда вы конвертируете байты в строки и наоборот, потому что это и есть кодировка: набор правил для преобразования между байтами и символами / строками. НЕ является свойством строк. В вашем случае конвертация должна происходить ровно дважды: когда вы читаете со сторонних сайтов, и когда вы пишете в свой лог-файл.
При чтении со сторонних сайтов вы можете , а не , просто использовать UTF-8, поскольку эти сайты могут использовать все виды различных кодировок. Таким образом, вам необходимо придерживаться кодировки, которую они объявляют в заголовке HTTP, теге HTML META или заголовке XML. Любой достойный HTTP-клиент сделает это за вас, так что вам просто нужно позволить ему выполнить свою работу, а не пытаться делать что-либо себе красивое.
При записи в файл журнала, с другой стороны, вы должны убедиться, что вы используете UTF-8, а не кодировку платформы по умолчанию (даже если это UTF-8, она может измениться). Это должно быть сделано в конфигурации вашей библиотеки журналов или, если вы пишете файлы без такой библиотеки, при создании OutputStreamWriter
.