使用相同的輸入排序在不同的機器上產生不同的結果。我如何解決這個問題?爲什麼不對每臺機器進行排序?
11
A
回答
20
在OS X上的man-page說:
*******警告*******環境指定語言環境將影響排序順序。設置LC_ALL = C以獲得使用本地字節值的傳統排序順序 。
這可能會解釋一些事情。
如果您的某些系統沒有語言環境支持,他們將默認使用該語言環境(C),因此您不必將其設置爲那些語言環境。如果您有一些支持語言環境並且想要相同的行爲,請在這些系統上設置LC_ALL=C
。這就是我所知道的以同樣的方式擁有儘可能多的系統的方法。
如果您沒有任何無語言環境的系統,只要確保它們共享語言環境可能就足夠了。
有關詳細規範信息,請參閱單一UNIX®規範,版本2的locale,environment variables,setlocale()描述和sort(1)效用的描述。
3
這可能是區域差異的結果:
$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_
$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_
LC_ALL環境變量設置爲相同的值應糾正問題。
3
這可能是由於locale environment variables的不同設置。 sort
將使用這些設置來確定如何比較字符串。通過在調用sort
之前以您想要的方式設置這些環境變量,您應該能夠強制它以一種特定的方式運行。
2
想要知道更多關於sort
的更多信息,請閱讀Single Unix Specification v3中的specification of sort
。它聲明
應使用當前語言環境的排序順序進行比較。
IOW,sort
排序依賴於腳本運行環境的語言環境(語言)設置。
相關問題
- 1. 爲什麼array_unique對值進行排序?
- 2. ORDER BY爲什麼不對這個查詢進行排序?
- 3. 爲什麼我不能使用函數對值進行排序?
- 4. 爲什麼我的對象不能使用sortedArrayUsingDescriptors進行排序?
- 5. 爲什麼不myDictionary.keys()。sort()對myDictionary的鍵列表進行排序?
- 6. 爲什麼我的ArrayList不能用比較器進行排序?
- 7. 爲什麼我的程序沒有對結構進行排序?
- 8. 爲什麼datagridview需要雙擊來對列進行排序
- 9. 爲什麼Hadoop Mapper會對數據進行排序?
- 10. 爲什麼jQuery中的.add()方法對集合進行排序?
- 11. 爲什麼要對已排序的非聚集索引字段進行排序?
- 12. 如何隨機對DataTable.Select()進行排序
- 13. 爲什麼Docker會調用每臺機器Moby?
- 14. 如何按不同的順序對每列進行排序?
- 15. 爲什麼不進行排序的回調工作?
- 16. 爲什麼執行器不能關機?
- 17. 爲什麼這個usort()函數不能正確地對小數進行排序?
- 18. libgdx爲什麼舞臺相機不動?
- 19. 如何對包含類對象的「vector」進行排序?爲什麼我錯了?
- 20. 爲什麼編譯器不執行排序規則?
- 21. 不使用任何排序功能對隨機數進行排序
- 22. 爲什麼不使用遞歸進行二進制搜索排序的數組
- 23. 在J2ME平臺上對字符串對象進行排序
- 24. 爲什麼排序給我隨機排序(Knockout observable array)
- 25. 根據每行中不同位置的鍵值對對文件進行排序
- 26. C#對Lamba進行排序,返回什麼?
- 27. 可以使用什麼函數對Vector進行排序?
- 28. 有什麼辦法可以對我的listview進行排序嗎?
- 29. 在Gremlin中對語句進行排序的語法是什麼?
- 30. Tablesorter不對字段進行排序%
如何設置語言環境爲LC_ALL = C? – Malcolm 2012-02-07 17:23:51