Linux 文件名中的西里尔符号

Linux 文件名中的西里尔符号

我有一个Linux,由Buildroot工具制作。

我在创建带有西里尔字母名称的文件时遇到了问题。当我尝试创建文件时,例如使用以下命令:

touch файл.txt

我得到一个文件,名为????.txt

我试图导出LANG变量:

# export LANG=ru_RU.utf8
# echo $LANG
ru_RU.utf8

我也尝试在目录和 EXT3 分区中创建该文件/temp,但结果是一样的。

一般来说,我可以在系统中使用西里尔字母:程序可以打印它们,并且我可以在程序中使用西里尔字母符号(例如在 vi 中)。

我还可以尝试做什么?

答案1

touch 做过正确创建文件名。但未ls显示它。这是因为ls默认情况下,对于任何无法识别为可打印字符的内容,都会显示问号。

您可以使用另一个命令显示目录的内容来测试这一点。尝试以下任一命令:

$ ls --show-control-chars
$ sh -c 'echo *'
$ python3 -c 'import os; print(os.listdir("."))'

将 $LANG 设置为 UTF-8 语言环境(就像您输入 时所做的那样export LANG=ru_RU.UTF-8)应该可以解决问题。由于这不起作用,请检查

  • 如果LC_CTYPE已设置,它将覆盖的值LANG
  • 您的系统是否安装了俄语支持?如果没有,请使用其他受支持的语言环境,例如en_US.UTF-8

相关内容