Enumérer les code pages.

Enumérer les code pages.

EnumSystemCodePages

Voir version :

Pas de dépendances

Télécharger :

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

BOOL CALLBACK func(LPTSTR lpCodePageString)
{
    int code = _tstoi(lpCodePageString);
    SetConsoleOutputCP(code);
    printf("code %d\t  = étage île noël âtre forêt repère être ça\n",code);
    return TRUE;
}

int main()
{
    EnumSystemCodePages(func,CP_SUPPORTED);
    return 0;
}



Commentaires

	Pour continuer l'exemple précédent, nous allons énumérer les différentes codepages.
	
	En effet, l'exemple précédent part du principe que la codepage numéro 1252 est installée chez vous. Si elle ne l'est pas, et bien vous
	n'avez pas les bons accents.

	Avec ces exemple, nous allons lister toutes les codepages installées chez vous, et écrire la phrase avec les accents.

	Vous verrez ainsi si une phrases est bien écrite, et retiendrez le codepage.
	Si d'ailleurs quelqu'un connait des numéros de codepage qui sont systématiquement installés chez nous autres français, je suis preneur.
	Je pensais que c'était le cas pour la 1252, mais visiblement non.

	Revenons au programme :
	Je lance la fonction EnumSystemCodePages, qui prend comme argument une fontion callback, et un paramètre. 
	Vous pouvez mettre CP_INSTALLED ou CP_SUPPORTED.
	http://msdn.microsoft.com/en-us/library/windows/desktop/dd317825(v=vs.85).aspx
	
	La fonction va simplement appeler N fois la fonction func. avec comme paramètre le codepage sous forme de chaine.

	Vous savez, Windows gère les chaines en tant que TCHAR.
	Un TCHAR, c'est un typedef char si vous n'êtes pas en unicode, ou un typedef wchar_t si vous êtes en unicode.

	Du coup, si on veut convertir cette chaine en int, 
		soit on utilise atoi (qui prend un char* et donne un int), 
		soit on utilise _wtoi (qui prend un wchar_t* et donne un int).

	Une macro existe pour ne pas d'enquiquiner avec ça : _tstoi, qui prend le bon selon qu'on soit en UNICODE ou non.
	(inclure tchar.h)

	Donc je récupère le code de la page, je l'active avec SetConsoleOutputCP, puis j'affiche la phrase :)

	Voila, regardez donc si une phrase vous convient !