我有一个用Java
. 当我在 中测试它时Eclipse
,它工作得很好。每个字符都是完美的,但是当我编译和导出 jar 并使用 OS X 终端对其进行测试时,奇怪的字符(我是西班牙人)是错误的。他们是一个“?”。
我想我UTF-8
到处都在使用,所以我不知道该怎么办。
谢谢
最有可能的是,您没有在任何地方使用 UTF-8,而是有一些默认为平台编码的代码(这反过来可以由环境变量设置,并且在 Eclipse 之间可能不同,它被设置为匹配工作空间文件编码和你的外壳)。
确保在代码中的所有字符转换(例如打开阅读器)中明确将“UTF-8”作为字符集。
例如,不要使用
Reader r = new FileReader("a.txt");
利用
Reader r = new InputStreamReader(new FileInputStream("a.txt"), "UTF-8");
如果这不可能,短期的解决方案是设置适当的环境变量或系统属性(我认为-Dfile.encoding=UTF-8
)。
locale
使用终端上的命令检查您的语言环境。打印的字符串应包含.UTF-8
或.utf8
类似的后缀。如果他们不这样做,则您使用的是非 UTF-8 语言环境,并且您的应用程序的输出无法正确显示。我不确定哪些语言环境可用,但您可以export LC_ALL=es_ES.UTF-8
在运行应用程序之前尝试运行,并检查是否有帮助。