Linux nicht "Unicode-Dateinamen" per se. Alle Dateinamen sind nur zufällige Sequenzen von 8-Bit-Zeichen, soweit es den Kernel betrifft.
Schlimme Dinge können passieren, wie der Benutzer eine Datei schreiben kann und dann ihr Gebietsschema ändert, wobei ihr Dateiname im vorherigen Gebietsschema codiert bleibt. Wenn Sie also einen Dateinamen als Eingabe verwenden, müssen Sie die exakte 8-Bit-Bytefolge beibehalten, die Ihnen in main() übergeben wurde. Wenn Sie es dem Benutzer anzeigen müssen, versuchen Sie es in der Codierung des aktuellen Gebietsschemas zu interpretieren und in Ihren bevorzugten Unicode-Typ zu konvertieren.
Auf vielen modernen Linux-Systemen wird die Codierung UTF-8 sein, so dass dies im Allgemeinen OK funktioniert.
'int main (intargc, char * argv [])', und Sie haben in 'argc' die Anzahl der Argumente, und' argv' ist ein Array von 'char'-Zeigern mit den Argumenten. Dies ist ANSI C, also wird jede portable Implementierung funktionieren. Oder möchten Sie, dass Befehlszeilenoptionen analysiert werden? –
Ich verstehe. Ich war mir des argc argv Paradigmas bewusst. Ich frage mich, wie ich Unicode-Argumente durch argv bekommen konnte. – lyxera
argv wird Ihnen geben, was auch immer die Schale dort hineinlegt; da die Shell es nur als Byte-String behandelt, wird es zurück zum Terminal geschoben. Alle gängigen Terminals sind jetzt Unicode-fähig, also sollte es einfach funktionieren. –