What have you tried? What does "wrong result" mean?
There are various lexicographic rules, and their ordering of these special characters might differ. Oracle has a session parameter called NLS_SORT which determines the lexicographic rules used for sorting and affects all queries in the session. Then there is a NLSSORT function that can be used to override the session-wide setting for a single query.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com