之前一直依稀有些认识:不同操作系统间的换行符有所差异,但是并没有很详细的了解,对于换行符差异可能引起的问题也没有多少概念.近来遇到了一个在Android上读取文件失败的问题,最后发现正是换行符差异造成的,遂而查阅了一些相关资料,在此简单记下~
换行符的来历不赘述了,有兴趣的朋友可以看下这里,总之,目前大概有 3种 换行符的表示方式(仅罗列主要操作系统):
Windows | Unix,Linux(包括Android和iOS)以及Mac OS 10(包括)以上版本 | Mac OS 9(包括)以下版本 |
---|---|---|
\r\n | \n | \r |
其中:
\r 为回车符号CR(Carriage Return, Unicode中的编码为 000D) \n 为换行符号LF(Line feed, Unicode中的编码为 000A)
OK,基础知识就这么些,现在看个示例:
假设我在Windows上创建了一个文本文件(用来配置某个文件的路径), 内容如下(注意文件内容最后有换行):
FolderName/FileName
文件实际的保存内容是这样的(注意换行的表示):
FolderName/FileName\r\n
然后我们尝试在Linux上读取该文件,由于Linux中认为\n才是换行符,所以最后读取到的内容是这样的(注意文件内容较之前多了一个\r):
FolderName/FileName\r
之前提到的那个Android上读取文件失败的问题就在于此了~