j'ai un petit soucis en C pour récupérer le charset courant. Je m'explique : je présume pour ça qu'il faut le faire avec setlocale.
Actuellement je fais ça :
#include <locale.h>;
#include <stdio.h>;
int main (int argc, char **argv) {
char *locale;
locale=setlocale(LC_ALL, "");
fprintf(stderr, "La locale est %s\n", locale);
locale=setlocale(LC_CTYPE, "");
fprintf(stderr, "La locale est %s\n", locale);
}
Et j'obtiens :
La locale est fr_FR.UTF-8
La locale est fr_FR.UTF-8
Est ce qu'il y a un moyen simple de n'obtenir que le "UTF-8" ?
Merci par avance.
# ...
Posté par zgnouf . Évalué à 1.
[^] # Re: ...
Posté par popopo333 . Évalué à 2.
[^] # Re: ...
Posté par alf . Évalué à 0.
D'ailleurs, si quelqu'un sait où le format de la locale est défini (C, POSIX...?)...
[^] # Re: ...
Posté par alf . Évalué à 1.
Je n'ai pas la norme POSIX sous la main, je ne peux donc vérifier ce qu'elle en dit.
[^] # Re: ...
Posté par popopo333 . Évalué à 1.
par contre se baser sur les variables de locale pour ca c'est beaucoup plus dangereux vu que ca peut contenir un peu n'importe quoi.
enfin tout ca pour dire que ma solution est en tout cas loin d'etre pire.
[^] # J'oubliais...
Posté par alf . Évalué à 0.
non mais ! ;)
Et comme main est déclarée comme retournant un entier, il est bon d'en retourner vraiment un ! Donc (code non testé):
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int
main (void)
{
char *locale = NULL;
char *charset = NULL;
locale = setlocale(LC_ALL, "");
charset = strchr(locale,'.');
if (charset == NULL)
{
fprintf(stderr, "La locale est %s\n", locale);
}
else
{
fprintf(stderr, "La locale est %s\n", ++charset);
}
return EXIT_SUCCES;
}
# simple...
Posté par LaBienPensanceMaTuer . Évalué à 2.
# Dans la glib
Posté par Arnaud . Évalué à 2.
g_get_charset ()
Obtains the character set for the current locale; you might use this character set as an argument to g_convert(), to convert from the current locale's encoding to some other encoding. (Frequently g_locale_to_utf8() and g_locale_from_utf8() are nice shortcuts, though.)
# Merci
Posté par huats . Évalué à 1.
En fait ce que je cheerche c'est une solution qui justement évite de devoir chercher le ".", qui soit donc robuste...
Je vais donc chercher du coté de g_get_charset()
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.