Cheekysoft
When writing to files or reading from files (that you are in control of), it is often worth specifying the encoding to use, as most Java methods allow this. However, also ensuring that the system locale matches can save a lot of pain
blockquote>
这只是文本文件的区别,在UNIX中,UNIX使用单个换行(LF)表示新行,Windows使用回车/换行(CRLF),而Mac仅使用CR。
二进制文件应该没有区别(即Windows计算机上的JPEG将与unix框上的相同JPEG逐字节地存储)。
国家字符的字符编码也可能有所不同。没有" unix编码",但是许多linux变体使用UTF-8作为默认编码。 Mac OS(也是Unix)使用自己的编码(宏)。我不确定Windows默认编码是什么。
但这可能是麻烦的另一个来源(除了不同的换行符之外)。
你有什么问题与换行有关的问题可以通过unix机器上的dos2unix或unix2dos程序轻松解决。
除了给出的答案之外,您可能还会发现不同文件系统的问题:
如果您只对文本文件的内容感兴趣,那么可以,这些行的结尾是不同的。看一下dos2unix之类的东西,这可能对您有所帮助。
(当然,还有很多其他因素使UNIX和Windows文件有所不同,但我认为您现在对这些其他差异不感兴趣。)
正如pauldoo所建议的,dos2unix之类的工具可能非常有用。请注意,这些可能以fromdos或tofrodos的形式出现在您的linux / unix系统上,甚至可能以通用工具箱的重新编码形式出现。
但是,您可能遇到的另一组问题可能与单字节/多字节字符编码有关。如果看到奇怪的意外字符(不在行尾),则可能是原因。特别是如果您看到方盒,问号,上下颠倒的问号,多余的字符或意外的重音字符。
在* nix框上运行命令语言环境将告诉您系统语言环境是什么。如果这与从Windows计算机传输过来的文本文件中使用的编码不同,则有时会导致问题,具体取决于这些文件的用法。您可以使用功能非常强大的recode命令尝试在不同的字符集以及任何行尾问题之间进行转换。 recode -l将向您显示该工具可以转换的所有格式和编码。这很可能会很长。
在写入文件或从文件中读取文件(由您控制??)时,通常值得指定要使用的编码,因为大多数Java方法都允许这样做。但是,确保系统区域设置匹配也可以避免很多麻烦。
除了换行符以外,如果在Windows上将文件视为Unicode,则字节顺序标记还会引起问题。