Yeah, but that breaks the rule that standard error is for error messages. You're then repurposing stdout and stderr to "standard binary output" and "standard various text messages output".
There is nothing wrong with sending binary (non-textual) output to stdout. Many programs, like the netpbm utilities, work like this.
That's what yuhong meant, I think. If your stdout output is binary, it's clear that all user-readable messages should go to stderr.