В комплекте приложения Java OS X по умолчанию используется кодировка MacRoman

У меня есть проект Java, настроенный в Eclipse для использования кодировки UTF-8. Когда я запускаю код в среде IDE, он запускается с UTF-8. Однако, когда я связываю свой проект Java в приложение OS X и запускаю его оттуда, код Java запускается с MacRoman, что подтверждается Charset.defaultCharset(),

Как я могу заставить мое приложение OS X работать в UTF-8?

1 ответ

Решение

В этом ответе отмечается, что кодировка символов определяется JVM при запуске. Если бы это запускалось из командной строки, вы могли бы установить кодировку UTF-8, добавив параметр времени выполнения -Dfile.encoding=UTF-8

Поскольку это выполняется в комплекте приложения, вы не можете добавить этот параметр в Терминал. К счастью, Apple упростила ввод вышеуказанного параметра альтернативным способом при запуске прилагаемого приложения.

Во-первых, используйте текстовый редактор (работает TextEdit), чтобы открыть файл Info.plist в комплекте приложений (щелкните правой кнопкой мыши приложение и выберите "Показать содержимое пакета", затем откройте папку "Содержание"). Вы увидите раздел, который выглядит примерно так:

<key>Java</key>
    <dict>
        <key>JVMVersion</key>
        <string>1.5+</string>
        <key>MainClass</key>
        <string>com.yourCompanyName.YourApplication</string>
        <key>Properties</key>
            <dict>
                <key>apple.laf.useScreenMenuBar</key>
                <string>true</string>
            </dict>
        <key>VMOptions</key>
        <string>-Xmx512m</string>
    </dict>

Импортная часть является <key>Properties</key> часть. Если его не существует, создайте его и <dict> сразу под ним. Добавьте следующий ключ и значение между <dict> теги:

<key>file.encoding</key>
<string>UTF-8</string>

Для дальнейшего редактирования вы можете добавить любые системные свойства таким способом. Если у вас есть параметр, как в начале этого ответа, просто отбросьте ведущий -Dпоставить часть перед равными в <key>и часть после равных в <string>,

Другие вопросы по тегам