J'essaye de lire un fichier qui peut avoir n'importe quel charset/codePage, mais je ne sais pas quel paramètre régional pour définir correctement le fichier. Voici mon extrait de code dans lequel j'essaie de lire un fichier ayant le jeu de caractères sous windows-1256, mais je veux obtenir le jeu de caractères dynamiquement à partir du fichier en cours de lecture afin de pouvoir définir les paramètres régionaux en conséquence.Détecter le jeu de caractères du fichier dynamiquement en C++
std::wifstream input{ filename.c_str() };
std::wstring content{ std::istreambuf_iterator<wchar_t>(input1), std::istreambuf_iterator<wchar_t>() };
input.imbue(std::locale(".1256"));
contents = ws2s(content); // Convert wstring to CString
Il n'y a pas de méthode complète pour déterminer le jeu de caractères, mais nous pouvons utiliser la bibliothèque ICU pour cela, ce qui donne une solution basée sur l'heuristique. J'ai utilisé un extrait de https://github.com/mooz/node-icu-charset-detector/blob/master/node-icu-charset-detector.cpp –
@SaurabhKathpalia ouais, externaliser à une bibliothèque est un excellent moyen de Gagnez du temps et des efforts. Gardez juste à l'esprit les pièges potentiels de l'approche basée sur l'heuristique (le dernier lien de ma réponse est un exemple pratique d'un tel piège). – user2079303