2016-04-06 31 views
0

Ich bin in der gleichen Situation wie fopen with unicode filename, wo ich eine Bibliothek verwenden möchten, die fopen verwendet. Die fragliche Bibliothek ist Minizip, und ich muss es mit UTF-8-Codierung, unter Windows, UNIX (OSX), iOS und Android arbeiten. Ich lese die Antworten, einschließlich der Diskussion über GetShortPathName, und im Wesentlichen ist die Schlussfolgerung, die Bibliothek neu zu schreiben. Gibt es einen Weg dazu? Außerdem habe ich gelesen, dass die fopen-Funktion auf UNIX-System UTF-8-Codierung (im Gegensatz zu seinem Windows-Gegenstück) verarbeiten kann. Kann das jemand bestätigen?Minizip - Verwenden von fopen mit UTF-8-Dateinamen

Ich würde wirklich hassen, herumzugehen und einige ifdef WINDOWS herum überall in Minizip zu setzen ... Hat jemand eine Alternative?

Antwort

2

Verwenden Sie unter Windows _wfopen für Unicode-Projekte. Beachten Sie, dass es Unicode (UTF-16) Zeichenfolgen akzeptiert, nicht UTF-8. Für UTF-8 hat der Standard fopen zusätzliche Option ccs: FILE *fp = fopen("newfile.txt", "rt+, ccs=encoding");

+0

Von dem, was ich verstehe, gilt die Kodierungsoption für fopen für den Inhalt der Datei, nicht den Dateinamen. Liege ich falsch? –

+0

@DavidMenard Nicht sicher über 'ccs' - vielleicht hast du Recht. '_wfopen' steht für Unicode-Dateinamen. – i486