小编And*_* H.的帖子

为什么UTF-8文本在OS X和Linux之间以不同的顺序排序?

我有一个包含UTF-8编码文本行的文本文件:

mac-os-x$ cat unsorted.txt
?
foo
?
'foo'
?
Run Code Online (Sandbox Code Playgroud)

如果它有助于重现问题,这里有一个校验和和文件中确切字节的转储,以及如何自己生成文件(在Linux上,base64 -d代替使用-D):

mac-os-x$ shasum unsorted.txt
a6d0b708d3e0cafb0c6e1af7450e9243da8cb078  unsorted.txt

mac-os-x$ perl -ne 'print join(" ", map { sprintf "%02x", ord } split //), "\n"' unsorted.txt
e3 82 a6 0a
66 6f 6f 0a
e3 83 81 0a
27 66 6f 6f 27 0a
e6 b4 a5 0a

mac-os-x$ echo 44KmCmZvbwrjg4EKJ2ZvbycK5rSlCg== | base64 -D > unsorted.txt
Run Code Online (Sandbox Code Playgroud)

当我在Mac OS X上对此输入文件进行排序时(无论我使用的是Mac OS X Yosemite附带的GNU sort 5.93,还是使用Homebrew安装的GNU排序版本8.23),我得到了这个排序结果:

mac-os-x$ env -i LANG=en_US.utf-8 LC_ALL=en_US.utf-8 /usr/bin/sort …
Run Code Online (Sandbox Code Playgroud)

linux sorting macos utf-8

10
推荐指数
1
解决办法
2272
查看次数

标签 统计

linux ×1

macos ×1

sorting ×1

utf-8 ×1