In said:
You actually have a valid point there

However you might do
well to think of zip, bzip2, lhz, arj, arc, etc. more as means of
packing for transmission (or storage), since in all cases the ^^^^^^^^^^^^
transition TEXT -> <bin> -> TEXT is lossless and well defined.
You're missing my point. The transition
local.text -> local.bin -> remote.bin -> remote.text
is not well defined at all, even if remote.bin can be decoded.
The point is that the compressor treats local.text as a *binary* file
completely ignoring its line structured format. When decoding it, you
get the original bytes of the text file, but they may be completely
meaningless as a text file on the remote host, if it uses an incompatible
format for representing text files.
OTOH, the transition local.text -> remote.text is (normally) aware of the
text nature of the data being transferred and the information allowing to
separate the data into lines of text is sent in a format understood by
both parties, so the textual information is safely transferred.
As a trivial example, take a text file on a Unix box, zip it, transfer the
binary to a Windows box and unzip it. The result is not a valid Windows
text file. The fix is trivial in such a case, but it's less trivial if
you transfer the binary to an IBM mainframe instead of a Windows box.
Even less trivial when dealing with record based text file formats...
OTOH, any text file transfer protocol (e.g. FTP) will do the right thing
when transfering text files in text mode, character set conversions
included.
On a related note, there is a subtle trap awaiting the unsuspecting Unix
programmer. The Unix convention is that each line of text is terminated
by an ASCII LF character, but most network protocols dealing with text
data use the CR + LF pair as line terminator. So, our unsuspecting Unix
programmer gets a line of text from a remote host using one such protocol,
carefully strips the LF character at the end and then displays it
like this:
printf("line starts here -->%s<-- line ends here\n", line);
and is completely baffled by the program's output ;-)
Dan