If the output is sent to a file, then it is all there. Same as when I run the script in an xemacs shell (see above). It definitely seems to be something related to xterm and not Perl. I'm beginning to think that xterm thinks certain byte squences are meant to be terminal commands (see my latest reply to kennethk). Maybe it is a pre-Unicode days "feature" with unintended consequences in multi-byte character world?
I very much like the idea of confirming the xterm behavior with a short C program. Good lateral thinking. Thanks!