Linux sort根据区域设置对空格进行不同的处理

时间:2014-01-10 17:48:20

标签: linux sorting

这个问题是“sort not sorting as expected (space and locale)”的变体,但有一点,请耐心等待。

以下输入(这些是挪威的地方):

$ more test_data
SANDE
SANDEFJORD
SANDE I VESTFOLD
ØSTFOLD

我可以使用UTF8语言环境进行排序:

$ LANG=en_US.UTF-8 sort test_data
ØSTFOLD
SANDE
SANDEFJORD
SANDE I VESTFOLD

这种方法很好,因为它将UT放在S之前,这是正确的,由UTF8指定。它并不好,因为它不会在“SANDE I VESTFOLD”之后对“SANDEFJORD”进行排序,这是您可能期望的用户。

我也可以使用C语言环境进行排序:

$ LANG=C sort test_data
SANDE
SANDE I VESTFOLD
SANDEFJORD
ØSTFOLD

这很好,因为它会像用户期望的那样处理空格。但它把Ø放在S之后,从国际角度来看这并不好。

我知道为什么会发生这种情况 - 两个语言环境以不同的方式处理空格,而C语言环境只是对字节值进行排序,因此它不会将非ANSI文本理解为除字节之外的任何内容。我已经阅读了Coreutils FAQ中的条目。

问题是:可以按照理解UTF-8但不忽略空格的方式进行排序吗?这可能没有指定一个全新的语言环境吗?是否可以通过指定一个全新的语言环境?我很难找到任何资源。

0 个答案:

没有答案