4. 区域设置

4.1. 文件和内核

现在您可以在文件名中使用任何 Unicode 字符。无需修改内核或文件实用程序。这是因为内核中的文件名可以是任何不包含空字节的内容,而“/”用于分隔子目录。当使用 UTF-8 编码时,非 ASCII 字符永远不会使用空字节或斜杠进行编码。所有发生的事情是文件和目录名占用的字节数比它们包含的字符数更多。例如,一个由五个希腊字符组成的文件名在内核中将显示为 10 字节的文件名。内核不知道(也不需要知道)这些字节显示为希腊字符。

这是通用理论,只要您的文件驻留在 Linux 上。对于从其他操作系统使用的文件系统,您可以使用挂载选项来控制文件名与 UTF-8 之间的转换

其他文件系统(nfs、smbfs、ncpfs、hpfs 等)不转换文件名;因此,仅当其他操作系统支持 Unicode 文件名时,它们才支持 UTF-8 编码的 Unicode 文件名。请注意,要为所有将来的重新挂载启用挂载选项,您需要将其添加到相应的第四列/etc/fstab行。

4.2. 区域环境环境变量

您应该设置以下包含区域名称的环境变量

LANGUAGE

覆盖 LC_MESSAGES

LC_ALL

覆盖所有其他 LC_* 变量

LC_CTYPE、LC_MESSAGES、LC_COLLATE、LC_NUMERIC、LC_MONETARY、LC_TIME

各个变量用于:字符类型和编码、自然语言消息、排序规则、数字格式、货币金额格式、日期和时间显示。

LANG

所有 LC_* 变量的默认值。(有关详细说明,请参阅“man 7 locale”。)

为了告诉您的系统和所有应用程序您正在使用 UTF-8,您需要将 UTF-8 的代码集后缀添加到您的区域名称中。例如,如果您想在 UTF-8 印地语区域设置中运行应用程序,那么使用 bash shell,您可以指定要传递给应用程序的环境变量。
  $ LANG=hi_IN.UTF-8 xman
为了为特定用户全局设置印地语区域设置,您可以将以下行附加到~/.bashrc文件。
  export LANG=hi_IN.UTF-8
之后,您无需在每次运行特定应用程序时都设置 LANG 环境变量。