我不知道這個問題屬於哪個網站,所以在此張貼。Unicode字符默認排序表
我使用PostgreSQL 9.2 RHEL 6.4和遵守下列規定:
select foo
from unnest('{а,ә,б,в,г,д,е,ж}'::text[]) as foo
order by foo collate "kk_KZ.utf8"
給
а
ә
б
в
г
д
е
ж
但
select foo
from unnest('{а,ә,б,в,г,д,е,ж}'::text[]) as foo
order by foo collate "en_US.utf8"
給
а
б
в
г
д
е
ә -- misplaced
ж
此外,我發現有默認的Unicode排序規則元素表[1],其中列出了有問題的字符(04D9; [.199D.0020.0002.04D9]#CYRILLIC SMALL LETTER SCHWA)。
據我所知,希望西里爾文字符能夠通過「en_US.utf8」語言環境正確處理是愚蠢的,但是Unicode或任何其他相關標準正確行爲的情況下,字符通常不屬於用於整理的語言/區域設置?
[1] http://www.unicode.org/Public/UCA/latest/allkeys.txt
僅供參考:glibc 2.28將於2018-08-01發佈,已與ISO-14651:2016同步(本身與Unicode 9同步),並將使用您預期的en_US訂單。 – ninjalj