【问题标题】:Bundled Java OS X App Defaults to MacRoman Encoding捆绑的 Java OS X 应用程序默认为 MacRoman 编码
【发布时间】:2013-11-14 06:36:43
【问题描述】:
我在 Eclipse 中设置了我的 Java 项目以使用 UTF-8 编码。当我在 IDE 中运行代码时,它使用 UTF-8 运行。但是,当我将我的 Java 项目捆绑到 OS X 应用程序并从那里运行时,Java 代码使用 MacRoman 运行,正如 Charset.defaultCharset() 所证实的那样。
如何让捆绑的 OS X 应用以 UTF-8 运行?
【问题讨论】:
标签:
java
macos
encoding
utf-8
mac-roman
【解决方案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> 中。