I know there are a lot of people out there having problems with this. The problem is you just can't even see the files which has names containing different character sets. In my case, I was having problems to read files with Turkish characters. AFAIK this was one of the major problems with the stock firmware. Anyway I have the solution for my case and I think you will easily adapt the code for your use.
DON'T FORGET THAT THIS GUIDE IS FOR TURKISH CHARACTER SET. YOU SHOULD ADAPT "tr_TR.UTF-8" AND OTHER NECESSARY FIELDS IN EACH CODE FOR YOUR CASE.
First look at if you have the character set you want.
If you can't see something like tr_TR.UTF-8 write
localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
After it finishes, (it could take some time) you should see tr_TR.UTF-8 when you write locale -a.
Then mount NTFS formatted drive
mount -t ntfs-3g /dev/sdb1 /mnt/hdd -o force,locale="tr_TR.utf8"
Don't forget that you should have /mnt/hdd directory to mount. You should now see the "special" files without any problem. Hope this helps...