Единственное, что должно (должно) быть затронуто, это время, которое требуется для загрузки и обработки текстовых файлов. Файлы классов (двоичные файлы) не должны быть затронуты. Убедитесь, что ваша Java IDE и система сборки настроены правильно. Если вы используете Maven, вам будет предложено установить кодировку набора символов в нескольких местах.
JVM хранит данные как UCS-2 или UTF-16. Это означает, что каждый символ хранится внутри с двумя байтами данных. Иногда это может быть неприятным сюрпризом для людей, пришедших из C-фона, где каждый символ обычно является байтом ASCII (старший бит не определен). Вы можете потратить недели на изучение и пытки над кодировками.
Вероятно, единственный полезный совет, который я могу дать, это установить ВСЕ в UTF-8. Просто стандартизируйте это везде. В ваших IDE, текстовых редакторах, сборках, страницах JSP и особенно в вашей базе данных. Напишите модульные тесты и интеграционные тесты, чтобы убедиться, что все установлено на UTF-8. Вы действительно не хотите иметь дело с миграцией / очисткой данных, пытаясь выяснить, какое случайное кодирование привело к определенной строке странных символов.
Вот слайд-колода на I18N, которую я написал недавно, надеюсь, это поможет.
http://www.slideshare.net/williverson/software-internationalization-crash-course
Да, и вы должны предполагать, что любые имена файлов, которые когда-либо будут передаваться по сети (например, общий доступ к файлам, электронная почта), будут испорчены и обработаны как ASCII или кодировка локальной ОС. Например, на компьютерах Mac, которые будут MacRoman, и в системах английского языка США CP1251. Таким образом, если вы связываете свои классы в JAR, это, вероятно, нормально, но у неразорвавшихся классов (или исходных файлов!) Будет проблема. Не JVM, а вещь уровня ОС.