Использует ли Java 1.7 различную кодировку символов?

Мы переносим наше приложение с Java 1.6 на Java 1.7. Мы перекомпилировали код с использованием Java 1.7 и получили ошибку при компиляции, которая была вызвана символом (Ó).

Было ли изменение в Java 1.7 связанным с символами? Наше приложение много обрабатывает входящие файлы, а затем загружает их в базу данных, и я хочу убедиться, что при обновлении до Java 1.7 чтение файла из java и запись в базу данных этого контента не приведут к нечетные преобразования символов.

Нужно ли вообще беспокоиться при обновлении до 1.7? Если да, то как мне получить ту же кодировку, что и в Java 1.6?

Ответ 1

Ошибка возникает из-за того, что вы сказали компилятору Java, что ваш источник кодируется в кодировке UTF-8, но он по-прежнему содержит некоторые расширенные символы ISO-8859-1. Недавно мне пришлось исправлять подобные ошибки в кодовой базе, которая была перенесена с 1,5 до 1,6. Я считаю, что Java 7 намного более строит кодировку UTF-8, чем предыдущие, и будет выдавать ошибки, где ранее неверные кодировки принимались молча.

Вам нужно убедиться, что ваш исходный код "Unicode-clean", то есть вы должны заменить любые расширенные символы ISO-8859-1 эквивалентами Unicode.

Ответ 2

Я столкнулся с этой проблемой в Windows и обнаружил, что кодировка по умолчанию для 1.7 была CP-1252. Я смог получить чистые компиляции, установив следующую переменную среды...

JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8