How to reduce a noise on a serial line
For garbled data I think the problem might be with the way you are receiving the data in the Arduino. I had a similar question with Arduino/Android usb communication that can be found here. 

You need to push serial data onto some sort of buffer before you can display or use the data. Since the rx/tx can be in somewhat random chunks and you cannot be certain in what size chunks the data will appear you need to be certain of the total data size before it is sent or have some indicator of a start and end transmission so you can set up a buffer to hold the data.