In Linux dann folgenden Befehl ausführen: locale | egrep "LANG =" | geschnitten -d. -f 2
Auf Unix-ähnlichen Systemen wird die Codierung von Dateinamen nicht auf Dateisystemebene, sondern in der Benutzerumgebung festgelegt. Zum Beispiel ist UTF-8 die Standardeinstellung in Ubuntu.
Bei Windows-Standardcodierung ist CP-1252 (AKA ISO-8859-1 oder Latin-1), aber FS verwendet Unicode über UTF-16-Codierung. Siehe http://en.wikipedia.org/wiki/Filename.
Aber wenn Sie Qt verwenden, können Sie Folgendes mit Qt Creator erstellen und Ergebnis der aktuelle Benutzercodierungsname sein.
#include <QTextCodec>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
Q_UNUSED(argc); Q_UNUSED(argv);
QTextCodec* tc = QTextCodec::codecForLocale();
cout << "Current names text codec: " << tc->name().data() << endl;
return 0;
}
Es hängt vom Filsystem selbst ab. Einige Dateisysteme unterstützen die Zeichencodierung und einige nur eine. Und die meisten speichern die Codierung nicht im Dateisystem selbst, da die Codierung bereits durch ihr Spezifikationsdokument definiert ist. Sie müssen diese Informationen manuell in Ihrer eigenen Datenbank speichern. – Jay
Dies hängt wirklich von der API und damit von der verwendeten Plattform (OS) ab. In C++ 17 könnte jedoch die Dateisystem-Standardbibliothek vollständig und enthalten sein, was dieses Problem wahrscheinlich irgendwie lösen sollte. –