setlocale()的默认值是什么意思?

时间:2012-06-10 21:36:53

标签: c linux posix

setlocale()&#39的默认设置是什么意思? setlocale()默认为" C" (" POSIX&#34)。但那究竟是什么意思呢?哪个是默认的字符集和语言?是" en_US.utf8" ?

2 个答案:

答案 0 :(得分:2)

从N1570:

  

7.11.1.1 setlocale函数

     

3 区域设置的“C”值指定C转换的最小环境;一个值   “”用于语言环境指定特定于语言环境的本机环境。其他   实现定义的字符串可以作为第二个参数传递给setlocale。

另外,从脚注222:

  

222)ISO / IEC 9945-2规定了可用于指定C语言环境的语言环境和charmap格式。

这给了你一个想法(因为脚注严格地说不是标准的规范部分的一部分)“C”在这种情况下意味着什么。

答案 1 :(得分:0)

区域设置“C”的字符集必须包含所有7位ASCII字符,并且整理顺序仅基于ASCII字符代码。不需要ASCII以外的其他字符。如果正在处理的文本包含该有限集之外的任何字符,则行为未定义。就语言而言,http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html中的所有标准定义都与美国英语相对应。