深入理解区域设置:从基础到 LC_CTYPE 详解
1. 通用区域设置基础
在处理区域设置时,字符集的兼容性至关重要。若区域设置类别使用了不兼容的字符集,应用程序使用这些类别所得到的结果是未定义的。具体而言,当其中一个类别为 LC_CTYPE,而另一个类别关联的区域数据包含至少一个不在 LC_CTYPE 所用字符集内,或者与 LC_CTYPE 字符集里相同字符编码不同的字符时,就会出现不兼容情况。同样,除非另有规定,若所选区域的特定类别和依赖该类别的接口所处理的数据使用了不同的代码集,结果也是未定义的。
应用程序可以通过调用 newlocale() 或 setlocale() 函数并传入适当的值来选择所需的区域设置。例如,若使用空字符串调用这些函数,如 newlocale(LC_ALL_MASK, "", (locale_t)0); 或 setlocale(LC_ALL, ""); ,则会使用相应环境变量的值。若环境变量未设置或为空字符串,会按照特定规则设置适当的环境。
2. POSIX 区域设置
符合标准的系统必须提供 POSIX 区域设置,也称为 C 区域设置。在 POSIX.1 中,POSIX 区域设置的要求比 ISO C 标准中 C 区域设置的要求更广泛。不过,在符合 POSIX 标准的实现中,POSIX 区域设置和 C 区域设置是相同的。在 POSIX 区域设置中,标准实用程序和函数的行为就好像该区域设置是通过 localedef 实用程序,使用第 7.3 节中 POSIX 区域设置表的输入数据定义
深入理解区域设置与 LC_CTYPE 详解
超级会员免费看
订阅专栏 解锁全文
1154

被折叠的 条评论
为什么被折叠?



