Using a normal bash prompt echo -e 'hello\tworld'
produces a real tab.
However the same command run within GNU screen puts spaces between the two words.
I have tested this on Ubuntu 10.04 with Screen version 4.00.03jw4 (FAU) 2-May-06 and RHEL 5.5 with Screen version 4.00.03 (FAU) 23-Oct-06
Is there a way to have screen output tab characters instead of converting them to spaces?
No, there is no way, short of writing code. Have a look at the man page under "BUGS:"
Hardware, in my case, is the software "gnome-terminal."
This simple experiment, inside GNU Screen, shows me that "\t" is outputting a TAB character (NOTE: You were missing an "-e" flag to your echo command):
Now I repeat that command and save the output to a file, verifying that there is a TAB character still present:
BUT if I cat that file, and copy and paste, via my mouse, into emacs the TAB is lost. So it seems like the parent gnome-terminal is doing something odd, or the tab is converted when pasted into my new window. Either way I suspect GNU Screen isn't to blame.