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