首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区域设置和编码(终端)的区别是什么

区域设置和编码(终端)的区别是什么
EN

Stack Overflow用户
提问于 2013-05-14 21:25:38
回答 1查看 2.3K关注 0票数 2

我已经尝试了几种方法来从c++程序中设置终端“编码”。我所能做的就是更改语言环境。或者LANG变量。

我仍然可以输入与LANG编码不同的字符(以及nl_langinfo的输出)

但是,如果我去终端>设置字符编码> ISO-8859-15 (或其他),那么它只允许ISO-8859-15。我也可以从我的C++程序中实现相同的事情(从图形用户界面设置)吗?

我使用setlocale(LC_CTYPE,"")将编码设置为终端编码,但它只使用了LANG variable.And也允许其他字符。

(终端>设置字符编码> ISO-8859-1 ( Latin1 )之后)

代码语言:javascript
复制
>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 !!

因此,这就引出了我对语言环境和编码的理解是否正确的问题。

有没有人能澄清一下其中的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 22:33:40

编码只是区域设置的一部分,对于终端来说,它会影响终端显示和处理输入的方式。

使用终端运行的程序的终端编码和区域设置几乎是独立的,可能不匹配或可能配置错误。

setlocale()将设置或查询程序的当前区域设置。

终端通常会产生一个新的shell,设置LANG或LC_*环境变量只会影响使用该shell运行的程序。

此外,设置区域设置或编码不会阻止输入“其他”字符。

这个answer应该有助于澄清一些事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16544456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档