Arduino with MAX232 not transferring data properly

I'm not sure if you've covered this, but you need to ground pin 5 of the DB9 connector. You also need to ground one end (and only one end) of the cable shield.

Most MAX232's charge pumps will run at 3.3 volts, but you'll only get about +/-6v.