为什么两个具有相同文本和编码但大小不同的文件?

时间:2019-03-20 10:11:56

标签: encoding character-encoding hex newline eol

我分别运行带有两个“相同”测试文件的程序,但是得到了两个不同的结果。

第一个16字节的测试文件a.txt导致正确的结果,但是第二个14字节的测试文件b.txt导致错误的结果。

我用编码UTF-8保存了它们两个。

在使用UTF-8编码的Sublime Text打开时,它们都由以下三行组成:

p cnf 1 1
1 0

但是,当使用Sublime Text以十六进制编码方式打开它们时,它们是不同的:

a.txt(16个字节):

7020 636e 6620 3120 310d 0a31 2030 0d0a

b.txt(14个字节):

7020 636e 6620 3120 310a 3120 300a

为什么它们不同?如何将b.txt变成a.txt

1 个答案:

答案 0 :(得分:3)

第一个文件具有Windows样式的行尾标记:回车符,后跟换行符'\r\n',十六进制0d 0a

第二个具有unix样式:换行符'\n'十六进制0a

有多种方法可以将一种样式转换为另一种样式。 Sublime文本可以选择保存特定的行尾,查找/替换可能有效,或者如果您使用的是类似Unix的系统,则可以尝试使用this question的答案。