我有一个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
。