In Linux, eseguire il seguente comando: locale | egrep "LANG =" | tagliare -d. -f 2
Su sistemi di tipo Unix, la codifica dei nomi di file non è impostata a livello di file system, ma piuttosto nell'ambiente dell'utente. Ad esempio, UTF-8 è l'impostazione predefinita in Ubuntu.
In Windows la codifica predefinita è CP-1252 (AKA ISO-8859-1 o Latin-1), ma FS utilizza Unicode tramite la codifica UTF-16. Vedi http://en.wikipedia.org/wiki/Filename.
Ma se si utilizza Qt, è possibile creare quanto segue con Qt Creator e risultare il nome di codifica utente corrente.
#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;
}
Dipende dal file system stesso. Alcuni filesystem supportano la codifica dei caratteri, e alcuni solo uno. E la maggior parte non memorizza la codifica nel filesystem stesso poiché la codifica è già definita dal suo documento di specifiche. Dovrai memorizzare manualmente queste informazioni nel tuo database. – Jay
Questo dipende molto dall'API e quindi dalla piattaforma (OS) che stai utilizzando. Tuttavia, in C++ 17 potrebbe essere la libreria standard del filesystem completa e inclusa, che dovrebbe probabilmente risolvere questo problema in qualche modo. –