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

Encoding 为什么两个文件的文本和编码相同,但大小不同?,encoding,character-encoding,hex,newline,eol,Encoding,Character Encoding,Hex,Newline,Eol,我分别使用两个“相同”的测试文件运行一个程序,但得到了两个不同的结果 16字节的第一个测试文件a.txt导致正确的结果,而14字节的第二个测试文件b.txt导致错误的结果 我将它们都保存在编码UTF-8中 当以编码UTF-8的方式用升华文本打开时,这两行代码都由以下三行组成: p cnf 1 1 1 0 但是,使用十六进制编码的升华文本打开时,它们是不同的: a.txt(16字节): b.txt(14字节): 为什么它们不同?如何将b.txt转换为a.txt?第一个文件具有windows样式

我分别使用两个“相同”的测试文件运行一个程序,但得到了两个不同的结果

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

我将它们都保存在编码
UTF-8

当以编码
UTF-8
的方式用升华文本打开时,这两行代码都由以下三行组成:

p cnf 1 1
1 0

但是,使用十六进制编码的升华文本打开时,它们是不同的:

a.txt
(16字节):

b.txt
(14字节):


为什么它们不同?如何将
b.txt
转换为
a.txt

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

第二种是unix风格:换行符
'\n'
hex
0a


从一种样式转换为另一种样式的方法有很多。升华文本可能有一个选项可以使用特定的行尾保存,查找/替换可能有效,或者如果您使用的是类Unix系统,您可以尝试使用这些选项。

注意:某些编辑器会清理文件。Unicode文本可能有不必要的代码点(特别是当输入是键盘时),并且也有不同的规范化。在您的情况下,可接受的解决方案是真正的原因,但您可能会遇到其他情况。
7020 636e 6620 3120 310d 0a31 2030 0d0a

7020 636e 6620 3120 310a 3120 300a