Проблемы с Java с UTF-8 в разных ОС - PullRequest
1 голос
/ 18 декабря 2010

Я программирую с другими людьми приложение для домашней работы колледжа, и иногда мы используем неанглийские символы в комментариях или в строках, отображаемых в представлениях.Проблема в том, что все используют разные программы и иногда разные IDE для программирования.

Конкретно, один использует MacOS, другой Windows7, а другой и я Ubuntu Linux.Кроме того, все они используют Eclipse, а я использую gedit.Мы понятия не имеем, можно ли настроить Eclipse или gedit для правильной работы с бизнесом UTF8, по крайней мере я ничего не нашел для себя.

Дело в том, что то, что я пишу неанглийскими символами, появляется в Windows &Виртуальные машины MacOS со странными символами и наоборот, а иногда то, что пишут мои друзья, не работающие с Linux, провоцирует предупреждения компиляции, например: warning: unmappable character for encoding UTF8.

Есть ли у вас какие-либо идеи для решения этой проблемы?Это не очень срочно, но это поможет.

Спасибо.

Ответы [ 4 ]

8 голосов
/ 18 декабря 2010

Не уверен насчет gedit, но вы наверняка можете настроить eclipse для использования любой кодировки, которая вам нравится, для исходного кода. Он является частью свойств проекта (и сохраняется в каталоге .settings внутри проекта).

alt text

2 голосов
/ 18 декабря 2010

Eclipse отлично работает с UTF-8. Смотрите ответ Майкла о его настройке. Может быть, для Windows и / или MacOS это действительно необходимо. Ubuntu использует UTF-8 в качестве кодировки по умолчанию, поэтому я не думаю, что там нужно настраивать Eclipse.

Что касается Gedit, эта картинка показывает, что можно изменить кодировку при сохранении файла в Gedit.

В любом случае, вам нужно убедиться, что все вы используете UTF-8 для своих источников. Это единственный разумный способ добиться межплатформенной переносимости ваших источников.

1 голос
/ 18 декабря 2010

Если ваш файл UTF8 содержит спецификацию (метку порядка байтов), то у вас возникнет проблема. Это известная ошибка, см. здесь и здесь .

Спецификация является необязательной для UTF8, и в большинстве случаев ее там нет, потому что она ломает многие инструменты (например, Javadoc, анализатор XML, ...).

Подробнее здесь .

1 голос
/ 18 декабря 2010

Вы можете избежать этой проблемы в строках, используя escape-последовательности символов и используя только кодировку ASCII для файлов.

Например, точка тире может быть выражена как "\ u2013".

Вы можете быстро найти код Java для отдельных символов здесь .

Как отмечает Сергей ниже, это лучше всего подходит для небольшого количества не-ASCII символов.Альтернатива - поместить все строки UTF-8 в файлы ресурсов.Eclipse предоставляет удобный мастер для этого.

...