【发布时间】:2014-01-03 16:19:04
【问题描述】:
我正在尝试通过在 Linux PC 上运行的 Java 应用程序逐行读取 MIME 类型为“appliaction/octet-stream”的文件。澄清:“appliaction/octet-stream”是在 Linux 上运行“file -ib file.txt”的结果。
我要读取的文件是在 Windows XP 上创建的。
我已将文件命名为“file.txt”。
在 linux 上,“cat file.txt”显示内容。 "cat -v" 和 vim 显示控制字符。
当我通过我的 Java 应用程序运行代码以迭代它时(使用简单的 BufferedReader(FileReader) 类型的代码),我的输出是意外的。
我应该采取任何措施吗?我尝试使用 dos2unix 转换文件,但无济于事。
EDIT:输入文件,通过vim或"cat -v"读取时如下:
[^@S^@y^@s^@t^@e^@m^@]^@^M^@
该行仅显示“系统”,但似乎控制字符使文件无法通过我的 Java 应用程序读取。
更新:我使用所有可用的字符编码运行我的代码,结果发现可读的字符集是“x-UTF-16LE-BOM”和“COMPOUND-TEXT”。感谢大家的帮助。
【问题讨论】:
-
可能是行尾。 Linux/Unix 使用
\n,Windows 使用\r\n。文件本身没有“mime 类型”。 mime 是一种包装在文件周围的东西,用于解释其中的数据类型。 -
使用相同的编码来读写文件,应该可以正常工作...
-
1) 详细说明“输出意外”,并详细说明文件包含的内容,也许还有一些代码... 2) 这与 MIME 有什么关系?
-
这很可能是编码或换行问题。在 Windows 上,默认换行符是
\r\n,默认编码是Latin 1。在大多数 Linux 系统上,默认换行符是\n,默认编码是UTF-8。 -
我应该澄清一下,出乎意料的输出是它读取的行都是空白的,但是输入文件的每一行都有文本。
标签: java file-io character-encoding