捆绑的Java OS X App默认为MacRoman编码

时间:2013-11-14 06:36:44

标签: java macos encoding utf-8 mac-roman

我在Eclipse中设置了Java项目以使用UTF-8编码。当我在IDE中运行代码时,它使用UTF-8运行。但是,当我将Java项目捆绑到OS X应用程序并从那里运行时,Java代码与MacRoman一起运行,如Charset.defaultCharset()所示。

如何使我的捆绑OS X应用程序以UTF-8运行?

1 个答案:

答案 0 :(得分:1)

This answer注意到字符编码是由JVM启动时确定的。如果从命令行运行,您可以通过添加运行时参数-Dfile.encoding=UTF-8

来设置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>中的等号之后