OK SWEET! Thank you all for your help,
The solution to this problem was swapping the "printf" with "print".
I guess the printf command interpereted some of the data in the file as either binary or as formatting marks, not 100% sure which.
Thanks again for all of your help!
As formatting marks. Good catch. The first argument of printf (not counting the file handle) is the format string. % is a special character in the format string. A spate of vulnerabilities that surfaced last year were caused by user text being used as a format string.
If you do need to use printf for whatever reason, there's a couple of alternatives:
Thanks for those tips, I'll remember it for next time. I think I should use print on the other files I am receiving as well, just to make sure I am not exposing a vulnerability.