W systemie Linux uruchom następujące polecenie: locale | egrep "LANG =" | wyciąć -d. -f 2
W systemach uniksowych kodowanie nazw plików nie jest ustawione na poziomie systemu plików, ale raczej w środowisku użytkownika. Na przykład UTF-8 jest domyślnym ustawieniem w Ubuntu.
W systemie Windows domyślne kodowanie to CP-1252 (AKA ISO-8859-1 lub Latin-1), ale FS używa Unicode za pomocą kodowania UTF-16. Zobacz http://en.wikipedia.org/wiki/Filename.
Ale jeśli używasz Qt, możesz zbudować następujące rzeczy za pomocą Qt Creator, a wynikiem będzie bieżąca nazwa kodowania użytkownika.
#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;
}
To zależy od samego systemu plików. Niektóre systemy plików obsługują kodowanie znaków, a niektóre tylko jeden. A większość nie zapisuje kodowania w systemie plików, ponieważ kodowanie jest już zdefiniowane w dokumencie specyfikacji. Będziesz musiał ręcznie przechowywać te informacje we własnej bazie danych. – Jay
To naprawdę zależy od API, a więc od platformy (OS), której używasz. Jednak w C++ 17 może być skompilowana i zawarta biblioteka standardowa systemu plików, co powinno jakoś rozwiązać ten problem. –