Unix和Windows文件之间的差异

2022-09-02 13:16:40

我假设“windows文件”和“unix文件”之间的唯一区别是换行符是正确的吗?

我们有一个系统,它已从Windows机器移动到Unix机器,并且格式有问题。

我需要在 unix/windows 之间自动执行转换,然后再将文件传递到我们的“传输系统”中的系统。我可能需要一些东西来确定当前的格式,并需要一些东西来将其转换为其他格式。如果只是换行符有很大的区别,那么我正在考虑只读取带有 java.io 的文件。据我所知,他们能够使用readLine处理这两个问题。然后只需将每行写回去

while (line = readline)
    print(line + NewlineInOtherFormat)
....

总结:

萨姆贾德森

这只是文本文件的不同之处,UNIX使用单个换行符(LF)来表示新行,Windows使用回车/换行符(CRLF),Mac仅使用CR。

Cebjyre详细阐述了:

OS X使用LF,与UNIX相同 - MacOS 9及更低版本确实使用了CR。

国家字符的字符编码也可能存在差异。没有“unix编码”,但许多linux变体使用UTF-8作为默认编码。Mac OS(也是unix)使用自己的编码(macroman)。我不确定,窗口默认编码是什么。

麦克道尔

除了换行差异之外,如果在 Windows 上将文件视为 Unicode,字节顺序标记也可能导致问题。

厚脸皮软件

但是,您可能遇到的另一组问题可能与单/多字节字符编码有关。如果您看到奇怪的意外字符(不在行尾),那么这可能是原因。特别是如果您看到方框,问号,颠倒的问号,额外的字符或意外的重音字符。

赛迪

在 unix 上,以 开头的文件.是隐藏的。在Windows上,它是一个文件系统标志,您可能不容易访问。这可能会导致本应隐藏的文件现在在客户端计算机上变得可见。

文件权限因两者而异。当您将文件复制到Unix系统上时,您可能会发现这些文件现在属于进行复制的用户,并且具有有限的权限。您需要使用 chown/chmod 来确保正确的用户有权访问它们。

有一些工具可以帮助解决这个问题:

保尔杜

如果您只是对文本文件的内容感兴趣,那么是的,行尾是不同的。看看像dos2unix这样的东西,它可能在这里有所帮助。

厚脸皮软件

正如pauldoo所建议的那样,像dos2unix这样的工具可能非常有用。请注意,这些可能在您的linux / unix系统上作为fromdos或tofrodos,或者甚至可能作为通用工具箱重新编码。

Java 编码帮助

厚脸皮软件

在写入文件或读取文件(由您控制的文件)时,通常值得指定要使用的编码,因为大多数 Java 方法都允许这样做。但是,同时确保系统区域设置匹配可以节省很多痛苦


答案 1

这只是文本文件的不同之处,UNIX使用单个换行符(LF)来表示新行,Windows使用回车/换行符(CRLF),Mac仅使用CR。

二进制文件应该没有区别(即Windows机器上的JPEG将与unix框中的相同JPEG一起字节。


答案 2

国家字符的字符编码也可能存在差异。没有“unix编码”,但许多linux变体使用UTF-8作为默认编码。Mac OS(也是unix)使用自己的编码(macroman)。我不确定,窗口默认编码是什么。

但这可能是另一个麻烦来源(除了不同的换行符)。

您的问题是什么?与换行相关的问题可以通过unix机器上的dos2unix或unix2dos程序轻松纠正