Java Python在接收到的行末尾添加一个额外的CR
Java应用程序向Python应用程序发送XML。它们都在同一台机器上。 当我打开收到的文件时,我可以看到额外的行(因为额外的CRs)。这可能是什么原因 这是接收器:Java Python在接收到的行末尾添加一个额外的CR,java,python,sockets,client-server,carriage-return,Java,Python,Sockets,Client Server,Carriage Return,Java应用程序向Python应用程序发送XML。它们都在同一台机器上。 当我打开收到的文件时,我可以看到额外的行(因为额外的CRs)。这可能是什么原因 这是接收器: f = open('c:/python/python.xml', 'w') while 1: print("xxx") data = socket.recv(recv_frame) remain_byte = remain_byte - len(data) print(remain_
f = open('c:/python/python.xml', 'w')
while 1:
print("xxx")
data = socket.recv(recv_frame)
remain_byte = remain_byte - len(data)
print(remain_byte)
f.write(data)
if (something):
break
这是发件人:
while ((bytesRead = file_inp.read(buffer)) > 0) {
output_local.write(buffer, 0, bytesRead);
}
这是原始文件:
<root><CR><LF>
<SONG><CR><LF>
<ARTIST>Coldplay</ARTIST><CR><LF>
</SONG><CR><LF>
</root><CR><LF>
酷玩
这是收到的:
<root><CR>
<CR><LF>
<SONG><CR>
<CR><LF>
<ARTIST>Coldplay</ARTIST><CR>
<CR><LF>
</SONG><CR>
<CR><LF>
</root><CR>
<CR><LF>
酷玩
将文件模式从'w'
更改为'wb'
,否则Python会将任何换行符('\n'
)转换为特定于平台的表示形式('\r\n'
,适用于Windows)。二进制模式禁止此转换。应用程序运行在什么操作系统上?是windows吗?您正在查看文件“c:/python/python.xml”吗?在windows上,一些C库执行回车/换行处理,以使UNIX文件与windows文件兼容。Unix仅使用一个字符分隔行(\n),但Windows使用cr+lf。所以有可能两组处理(Java和Python)正在将一行分隔符扩展为两行分隔符,是的,我正在检查的文件是正确的。将文件模式从'w'
更改为'wb'
。IIRC在打开文件进行写操作时使用“wb”,这会抑制Python进行行分隔符扩展。