在 CentOS 8 中默认使用 C.UTF-8
作为系统区域设置(locale)是一个常见行为。以下是相关分析和解决方案:
C.UTF-8
作为 fallback 区域设置(而非传统的 en_US.UTF-8
)。C.UTF-8
的特点:
C
的扩展),仅支持基本字符集和 UTF-8 编码。# 查看当前生效的区域设置
locale
# 列出所有已生成的区域设置
locale -a
如果输出中缺少 en_US.UTF-8
或其他需要的区域设置,需手动生成。
en_US.UTF-8
)# 编辑区域设置配置文件
sudo vi /etc/locale.conf
将内容改为:
LANG=en_US.UTF-8
保存后执行:
# 生成指定的区域设置
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
# 应用配置(或重启系统)
source /etc/locale.conf
localectl
修改(推荐)# 设置系统区域为 en_US.UTF-8
sudo localectl set-locale LANG=en_US.UTF-8
# 验证
localectl status
# 仅在当前会话中生效
export LANG=en_US.UTF-8
# 确认变更已生效
locale
# 输出应类似:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
...
问题:locale: Cannot set LC_CTYPE to default locale
解决:确保已生成目标区域设置(如 sudo localedef -i en_US -f UTF-8 en_US.UTF-8
)。
问题:localedef: Cannot create directory
解决:检查 /usr/lib/locale/
权限,或手动创建目录。
/etc/environment
中全局设置 LANG
。通过以上步骤,您可以将 CentOS 8 的默认区域设置从 C.UTF-8
更改为其他值(如 en_US.UTF-8
),以满足语言或应用需求。