It also depends on which netcat you use. I usually use ncat (which comes with nmap) with the following invocations, and that never gave me any encoding/EOF/CRLF trouble:
# on sender
ncat --send-only --listen 12345 < file.zip
# then, on receiver
ncat --recv-only 1.2.3.4 12345 > file.zip
I'd never though of that, so simple!
My only issue is that it seems to hang after it's done. What am I missing?