java - 捆绑的 Java OS X 应用程序默认为 MacRoman 编码

标签 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 运行?

最佳答案

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> 中等于之后的部分.

关于java - 捆绑的 Java OS X 应用程序默认为 MacRoman 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971186/

相关文章:

java - 为 JBoss 实现自定义 ServerAuthModule

java - 设置计时器 GWT 后更新相同标签

java - RxJava 使用 foreach 循环改造请求链

html - 我如何通知 Mac OSX 的缩放按钮关于网站的最佳尺寸

c# - 是否可以使用Base64在加密字符串中获取冒号

java - Jaxb2marshaller - 使用 contextPath 和classesToBeBound

python - cmake 发现错误的 python 库

cocoa - 设置 QTMovie 属性

.net - 如何将默认字符串编码更改为 UTF 8?

ios - 将 uint8_t 转换为 NSString