2009-10-13 5 views
3

Ce poste provenaient de How do you get what kind of encoding your system uses in c/c++?Pourquoi nl_langinfo (CODESET) est-il différent de la charmap locale?

J'ai essayé d'utiliser

nl_langinfo(CODESET) 

mais je m'y suis ANSI_X3.4-1968 au lieu de UTF-8 (qui est ce que je reçois en tapant: locale charmap). Est-ce que j'utilise nl_langinfo() mal? Comment dois-je l'utiliser?

+0

Si vous lisez plus attentivement les pages de manuel dans les réponses de l'article d'origine, vous n'auriez pas du tout rencontré ce problème ... – ephemient

Répondre

3

Vous devez d'abord appeler

setlocale(LC_ALL, ""); 

nl_langinfo donne toujours des informations sur les paramètres régionaux en cours.

+0

Pour développer cela, un programme C commence toujours avec les paramètres régionaux en cours comme "C" - L'extrait de cette réponse est ce que vous utilisez pour remplacer cela par les paramètres régionaux par défaut du système. – caf

+0

ok cela fonctionne maintenant – user176121

+0

Ce problème peut apparaître dans Yocto ou tout ce qui vérifie les paramètres régionaux. Vous pouvez exporter par exemple LC_ALL = export LC_ALL = en_US.UTF-8 –

Questions connexes