我的应用程序与utf8在日食中工作正常,但它不在终端

时间:2012-06-19 10:13:40

标签: java macos utf-8

我有一个使用Java开发的应用。当我在Eclipse中测试时,它完美无缺。每个字符都是完美的,但是当我编译并导出jar并使用OS X终端进行测试时,奇怪的字符(我是西班牙语)是错误的。他们是“?”。

我想我到处都使用UTF-8,所以我不知道该怎么做。

由于

2 个答案:

答案 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,并检查是否有帮助。