UTF-8Символы неправильно отображаются в - PullRequest
1 голос
/ 11 мая 2011

мы работаем над проектом для школы. Проект обязателен на трех языках (голландский, английский и французский), поэтому ответ «Изменить на английский не подойдет».

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

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

Мы много слышим, что это связано с проблемой кодирования, но я искренне сомневаюсь в этом, поскольку весь наш проект кодируется в UTF-8.

Вот выдержка из французского пакета ресурсов:

VIDEOSETTINGS = Réglages du Vidéo
SOUNDSETTINGS = Réglages du son
KEYBINDSETTINGS = Keybind Paramètres
LANGUAGESETTINGS = Paramètres de langue
DIFFICULTYSETTINGS = Paramètres de Difficulté
EXITSETTINGS = Sortie les paramètres

и это приводит к следующим отображаемым строкам.

показать результат для предоставленного извлечения пакета ресурсов

Буду очень признателен за решение этой проблемы

EDIT

для дополнительной информации мы создаем настольное приложение с использованием Swing.

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Это связано с проблемой кодирования.

Вы используете неправильный декодер (вероятно, ISO-8859-1) для байтов в кодировке UTF-8.

Эти строки хранятся вфайл?Как вы загружаете файл?Через класс Properties?Класс Properties всегда применяет декодирование ISO-8859-1 при загрузке простого текстового формата из InputStream.Если вы используете Properties, используйте перегрузку load(Reader), переключитесь на формат XML или перепишите файл с соответствующей кодировкой.Кроме того, если вы используете Resource.getBundle() для загрузки файла свойств, вы должны использовать кодировку ISO-8859-1 для записи этого файла, избегая любых нелатинских символов.

Поскольку это проблема кодировки, онабыло бы очень полезно, если бы вы опубликовали код, который вы использовали для выбора кодировки символов.

2 голосов
/ 11 мая 2011

Вы не показали какой-то код, где вы читали файлы ресурсов.Но если вы используете PropertyResourceBundle с InputStream в конструкторе, InputStream должен быть закодирован в ISO-8859-1.В этом случае символы, которые не могут быть представлены в кодировке ISO-8859-1, должны быть представлены Unicode Escape.

Вы можете использовать native2ascii или AnyEdit как инструменты для преобразования свойств в экранированные символы Юникода, см. Использование файла кириллицы .properties в проекте eclipse

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...