Я пробовал несколько способов установить «кодировку» терминала из программы на С++. Все, что я мог сделать, это изменить локаль. или переменная LANG.
Тем не менее я могу вводить символы, которые имеют другую кодировку, чем LANG (и вывод nl_langinfo(CODESET))
Но если я зайду в Terminal > Set Character Encoding > ISO-8859-15 (или что-то в этом роде), тогда будет разрешено только ISO-8859-15. Могу ли я добиться того же (настройка из графического интерфейса) из моей программы на C++?
Я использовал setlocale(LC_CTYPE,""), чтобы установить кодировку в терминальную кодировку, но она просто использует переменную LANG. И позволяет использовать и другие символы.
(После Терминала > Установить кодировку символов > ISO-8859-1 (Latin1))
>setenv LANG en_US.iso885915 --> latin9
>./a.out
Current Locale : C
Lang info : ANSI_X3.4-1968
Trying to change locale from C to ""
Current Locale : en_US.iso885915
Lang info : ISO-8859-15
Enter some string :¤¦¨´¸¼½¾ dfsafas --> but these are Latin1 charaters !!
Entered string : ¤¦¨´¸¼½¾ dfsafas --> They are even printed back !!
Итак, это привело меня к вопросу, правильно ли я понимаю локаль и кодировку.
Может кто-нибудь пояснить разницу?