Calc 排序的原則似乎有問題

我打算放棄微軟 Excel 改用免費的 Calc 替代,但在學習適應的過程中發現 Calc 對於半形符號字元排序的結果與 Excel 不同。以附圖為例,按 Unicode 內碼排序應該是 , . / ;,而 Excel 的結果是正確的。(Calc 排序的結果是 , ; . /)

不知這是 Calc 的 bug,或是需要在 Calc 中勾選哪些項目才會得到正確的結果?有請各位前輩釋疑。感謝!我的 LibreOffice Calc 版號資訊如下:
Version: 7.4.4.2 (x64) / LibreOffice Community
Build ID: 85569322deea74ec9134968a29af2df5663baa21
CPU threads: 12; OS: Windows 10.0 Build 22621; UI render: default; VCL: win
Locale: zh-TW (zh_TW); UI: zh-TW
Calc: CL

螢幕擷取畫面

預設的排序行為不是依照 Unicode/ASCII,不過我並未找到相關文件說明預設的排序演算法為何。

參考連結:

1 Like

這裡簡單解釋了亞洲語言中排序行為上的差異。所以可以確定 LibreOffice 排序行為本來就不是照 Unicode/ASCII (所以不能算是 bug)。不過半形符號的排序依據為何,在 這一頁 還在持續討論中。

感謝您協助回報這個疑似 bug 的議題至 LibreOffice 官網。在此發文詢問前,我也是在 LibreOffice Help 網頁裡找尋不到解決的方法,才在此發問。

此外,我也發現 Calc 對於中文字的排序結果亦與 Excel 不同。雖然兩者基本上都按照筆劃數排序,但中文字在相同筆劃數下,兩個軟體會有不同的排序結果;如果我們可以解讀出英文半形符號排序的準則依據,或許也可以解釋中文字的排序結果為何。

為完整瞭解 Calc 對於半形符號的排序規則,我把英文鍵盤能打出來的半形符號都打過一遍,以 Unicode(欄 B)排序,結果如下:

如以字符(欄 A)排序,則會得到大不相同的結果:

謹附 .ods 原始檔案供參。
sort-test.ods (17.5 KB)

我已將 Calc 更新為最新版本,版本資訊如下:
Version: 7.5.0.3 (X86_64) / LibreOffice Community
Build ID: c21113d003cd3efa8c53188764377a8272d9d6de
CPU threads: 12; OS: Windows 10.0 Build 22621; UI render: default; VCL: win
Locale: zh-TW (zh_TW); UI: zh-TW
Calc: CL threaded

真的要「解決」應該是透過 工具 - 選項 - LibreOffice Calc - 排序清單 去定義排序方式。不過那只能算是個 workaround。

指定排序清單並不能完全解決這個問題。因為每個排序清單的各個元件必須用「半形逗點」分隔,所以使用者並無法指定「半形逗點」字元本身要放在哪個序位。

可以確定目前使用的排序方式不是 bug。

請參考:Calc data sorting - not following ascii/unicode order? - #12 by erAck

另請參考:Calc data sorting - not following ascii/unicode order? - #11 by Wanderer

如果真的非用 unicode order 排序,有人提出一個可能的 workaround:Calc data sorting - not following ascii/unicode order? - #13 by EarnestAl

謝謝解答。雖然這是 LibreOffice 的功能特色,短期間應該不會有機會改變這個「排序慣例」。

不知未來是否有機會在 Calc 中增加「依照 Unicode 內碼排序」的選項讓使用者來勾選,或許不會有實現的一天,就讓我繼續做夢好了。

兩種方式讓夢想成真

  1. 發 feature request 然後與社群開發者進行討論,說服他們來實作
  2. 自己研究自己做,這是自由開源軟體