我有一个在 unix 机器上提供文件的 java 应用程序,每个字符串包含多个美国单位分隔符, 在本地,当我在 Windows 机器上的 eclipse 上运行它时,它在控制台上显示正常:
1▼somedata▼somedata▼0▼635064▼0▼somedata▼6
但是当我从 unix 机器上运行程序时,文件的内容显示为。
1â¼N/Aâ¼somedataoâ¼somedataâ¼somedata
在 locale -a
中将 LANG 变量更改为任何值似乎不起作用。
最佳答案
看起来字符集不匹配。在 Linux 上你很可能有 UTF-8。使用 Java,您通常会得到 UTF-16。尝试使用 iconv
从 UTF16 转换为 UTF8,看看它在 linux 上的样子。
cat file | iconv -f UTF-16 -t UTF-8
但实际上,如果它是 UTF-16,情况会更糟。也许这只是字体不匹配。但如果这是问题所在,您可以使用字符编码(查看源代码并转换为 utf-8)。或者也许您的来源是 UTF-8 和目的地 - 一些本地编码。 这是有道理的,因为您的特殊字符在 UNIX 机器中显示为 2 个字符。这意味着源很可能是 UTF-8,而 UNIX 正在使用一种编码,其中每个字节都是一个字符。
关于java - 在 unix 机器上渲染美国单位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166514/