Почему nl_langinfo (CODESET) отличается от локали charmap?

Это сообщение возникло из Как вы узнаете, какую кодировку ваша система использует в c / c ++?

Я пытался с помощью

nl_langinfo(CODESET)

но я получил ANSI_X3.4-1968 вместо UTF-8 (что я и получаю при наборе: locale charmap). Я неправильно использую nl_langinfo ()? Как я должен использовать это?

13.10.2009 05:46:35
Если бы вы прочитали man-страницы в ответах оригинального поста более подробно, вы бы вообще не столкнулись с этой проблемой ...
ephemient 13.10.2009 15:07:41
1 ОТВЕТ
РЕШЕНИЕ

Вам нужно сначала позвонить

setlocale(LC_ALL, "");

nl_langinfo всегда дает информацию о текущей локали.

3
13.10.2009 05:49:57
Чтобы расширить это, программа на C всегда запускается с текущей локалью в качестве локали «C» - фрагмент в этом ответе - то, что вы используете, чтобы заменить ее системной локалью по умолчанию.
caf 13.10.2009 05:52:12
Эта проблема может появиться в Yocto или любом другом, который проверяет локаль. Вы можете экспортировать, например, LC_ALL = export LC_ALL = en_US.UTF-8
Paulo Neves 3.04.2017 12:39:38