Basically I have a upp GUI app and a command line program which is called from that upp application. I want to pass it an argument with is a string or better a char * array. Internally this char * array will be used by strcmp.
Do you want to convert it to a legacy encoding? strcmp will work for equality test with utf-8, but not with comparison.
Actually, it will work for comparison as well, only the results might not be what you have expected...
Anyway, the same is true for 'legacy encoding'. The correct comparison depends on language rules; you ought to use LanguageInfo::Compare to get correct results, but it is now implemented only for Czech language and even that is not a full implementation of rules...
(That said, there is some default implementation in int DefaultLanguageCompare that would probably work reasonably well for most Latin based languages).