Don't forget, there are different ways to support Unicode in the file system. I've worked a lot with Unicode texts in Perl and it is fairly good, nothing to complain about. But when it comes to file names, the system surrounding the application makes it complex. There are different ways to store Unicode names in the file system. Common in Linux (Unix?) is UTF-8 encoding. But there are also UTF-16 (BE or LE), there are UCS-2 and UCS-4 and there might be some other custom way.
So, to solve the problem, it is better to learn, how Unicode characters are stored in your file system. Here, the readdir definitely can help. Just read the content of directory, dump file/directory names as hex and see which encoding is used. Of course, if you intend your application to run on different systems, then you are doomed to learn all possible ways Unicode is supported on them and finding out, how your program can automatically figure out the correct one.