This is the nature of most IR remote controls, they auto repeat the same code for as long as you hold the key down, and it's very difficult to make it send just one character no matter how quick a trigger finger you have.
You can deal with this behaviour by applying a little logic to your receiver software function. Instead of accepting every character you receive, just check to see if it's different then the last character you received. If it's the same character just ignore it in your code, if it's a different character then treat it as a valid new character. That make sense?