Инициализируйте языковой стандарт вашего приложения с помощью setlocale (LC_ALL, "")
, а затем вызовите nl_langinfo (CODESET)
. Это дает вам разрешенное значение из переменных среды LANG, LC_CTYPE, LC_ALL.
Это не говорит вам, как на самом деле работает эмулятор терминала, но это то, на что полагается почти каждое приложение. Если это дает неправильный результат, ваша система неправильно настроена, и почти все другие приложения также будут неправильно работать в вашем эмуляторе терминала. Как разработчик приложения, вы не должны пытаться обнаружить и исправить, если оно сломано. Вы можете смело предположить, что он настроен правильно для вас. Как системный администратор, разработчик дистрибутива или пользователь, взламывающий вашу систему, ваша задача - убедиться, что переменные локали и фактическое поведение эмулятора терминала совпадают.