当我查看 Nautilus 中列出的文件(按名称排序)时,如果同时存在英语和非 ASCII(在我的情况下为日语)字符,则某些字符(假名)与 ASCII 字符乱序混合。(Windows 将它们正确隔离。)
我在这里检查了许多相关问题,似乎排序顺序在 Nautilus 中是硬编码的,因此无法更改。
但是我在这里的问题不是如何更改它,而是实际定义排序算法的位置,与非 ASCII 字符有关。如果这很重要,我正在使用 18.04。我的语言环境是美式英语。
终端ls
命令似乎给出了相同的命令,所以这可能是系统设置而不是特定于 Nautilus,但我也不知道在哪里寻找它。
先决条件:首先使用以下命令检查您的语言的区域设置(在您的情况下为日语区域设置)是否已安装在您的系统中:
如果未列出日语语言环境 (
ja_JP.UTF8
),则必须使用以下命令将其添加到系统中:通常,排序顺序是系统设置,与您当前的语言环境有关。您提到您正在使用“美国英语”语言环境。我认为它是
en_US.UTF-8
并且可能这就是您看到文件名按美国排序顺序排序的原因。首先,从命令行测试以下内容。转到包含您的英文和日文命名文件的目录并输入命令:
如果此命令按您想要的顺序显示文件,那么您也可以使用以下命令尝试 Nautilus:
如果您收到如下错误消息:
再次检查:
查看系统中启用了哪些语言环境。如果未启用日语语言环境,则必须使用以下命令将其添加到系统中:
注意:在上述命令(
ls
和nautilus
)中,我以一个环境变量为前缀,该变量仅影响该命令调用。如果您想永久更改您的语言环境,您还必须使用sudo dpkg-reconfigure locales
命令更改“默认语言环境”。Nautilus/File 排序算法似乎在GLib中定义:
更具体地说,在gunicollate.c和它的
g_utf8_collate_key_for_filename()
功能。它在各种问题中进行了讨论,例如
“ g_utf8_collate_key_for_filename() 带数字的角落案例”
或 Launchpad 上的这个旧错误:
“按名称排序不适用于数字或特殊字符”
其中评论 #10建议使用此 hack 来解决排序问题:
https://github.com/heralight/GlibSortFileNameHackLibrary