java - 在 unix 机器上渲染美国单位分隔符

标签 java bash unix ascii

我有一个在 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/

相关文章:

java - 有没有办法在不关注的情况下在macos上运行java awt应用程序

java - 如何从另一个 fragment 中对适配器进行排序

linux - Shell 脚本 - 不要等待读取

bash - 在我的脚本中创建通过电子邮件发送的内容的日志

node.js - 如何更新 node-gyp 和/或解释 "node-gyp rebuild 2> builderror.log)"?

c - 删除 root 权限

java - google directions api 持续时间是否反射(reflect)实时路况?

java - 如何添加数组,我将在其中输入项目并显示数据,而不是静态数组,我希望它是动态的

linux - bash 中使用的 -ex 选项是什么 | #!/bin/bash -ex 意思

perl - grep 3 最新出现的内容以及该出现周围的一些行