Использует ли 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