Hacker News 中文摘要

RSS订阅

当我说“按字母顺序”时,我指的就是“按字母顺序” -- When I say "alphabetical order", I mean "alphabetical order"

文章摘要

作者与父亲徒步旅行后,发现两人安卓手机拍摄的照片按文件名时间戳排序时出现混乱。本以为这是Windows系统的bug,但在Google Drive中也出现同样问题:不同手机拍摄的照片混杂排序,时间顺序被打乱。这表明问题可能不仅限于微软系统。

文章总结

标题:当我说"字母顺序"时,我指的就是字母顺序

上个月我和父亲进行了一次多日徒步旅行。我们都用安卓手机拍摄了大量照片,照片命名格式均为IMG_YYYYMMDD_HHmmss(可能附加其他数字及.jpg后缀)。这种命名方式本应确保按字母排序等同于按日期排序。

然而奇怪的事情发生了:在父亲的Windows电脑上,照片排序完全错乱——我的手机照片全部排在他之前。我最初以为这是Windows系统的bug,但随后发现Google Drive、KDE的Dolphin文件管理器、Gnome以及手机自带文件管理器都出现了同样的错误排序现象。

通过Linux系统的ls命令验证,传统字母排序确实能正确识别时间顺序。经过一个多月的排查,终于发现问题根源:现代操作系统普遍采用"智能"排序算法,当文件名包含数字时会自动按数值大小而非严格字母顺序排列。

具体来说,父亲的手机在文件名中将毫秒数直接接在秒数后(如055436307),而我的手机用下划线分隔(如095716_607)。在传统字母排序规则下这不会影响整体顺序,但"智能"算法将前者识别为巨大数值,导致排序异常。

讽刺的是,这种旨在"人性化"的设计反而造成了混乱。虽然可以通过统一重命名文件或深度修改系统设置来解决,但作者更怀念计算机严格执行指令而非"自作聪明"的时代。

(注:原文中的图片链接和代码块样例因技术细节过多已酌情删减,保留了核心问题描述和解决方案的关键信息。)

评论总结

以下是评论内容的总结,按主要观点分类:

支持自然排序(数字按数值排序)

  • 主要观点:多数用户更习惯数字按数值排序(如file9.txt在file10.txt前),操作系统默认采用此方式更合理。

    • 引用
      "I almost always want the version-sorting... a problem of labeling rather than one of sorting." (JoshTriplett)
      "Natural sort happens in real life and everyone understands that." (nebezb)
      "They know users usually want natural sort... why would you expect the default behaviour to be a lexicographical sort?" (shawnz)
  • 论据

    • 符合用户直觉(如"10"应排在"9"后)。
    • 操作系统通常标注为"按名称排序"而非"字母顺序",避免歧义。

支持严格字母顺序(数字按字符编码排序)

  • 主要观点:严格按字符编码排序更符合技术定义,用户可通过补零实现需求。

    • 引用
      "Digits... should not get sorted. That's the true result of doing what you asked." (1970-01-01)
      "Numbers aren't in the alphabet. So no, you don't mean alphabetical order." (furyofantares)
  • 论据

    • 数字不属于字母表,严格按ASCII/Unicode排序逻辑更清晰。
    • 用户可通过命名规范(如"file_09.txt")控制排序结果。

技术实现与折中方案

  • 主要观点:需区分"字母顺序"与"词典顺序",或提供自定义选项。

    • 引用
      "The proper term is lexical sort, not alphabetical." (xerox13ster)
      "Maybe future OSes will add a rule... or give configurable options." (zahlman)
  • 解决方案

    • 使用现有算法(如Alphanum Algorithm、Unicode DUCET)。
    • 按元数据(如创建时间)排序可避免命名争议。

用户体验与设计哲学

  • 主要观点:默认行为应服务多数用户,边缘案例需自行适配。

    • 引用
      "The author's situation is extremely rare... the common case should be default." (armchairhacker)
      "Your OCD is not my OCD." (zarzavat)
  • 争议点

    • 是否应标注为"自然排序"而非"字母顺序"。
    • 历史原因(如Windows 30年来的默认行为)是否合理。

关键引用保留

  1. 自然排序支持
    "Natural sort happens in real life and everyone understands that." (nebezb)
    "They know users usually want natural sort... why would you expect the default behaviour to be a lexicographical sort?" (shawnz)

  2. 严格字母顺序支持
    "Digits... should not get sorted. That's the true result of doing what you asked." (1970-01-01)
    "Numbers aren't in the alphabet. So no, you don't mean alphabetical order." (furyofantares)

  3. 技术折中
    "The proper term is lexical sort, not alphabetical." (xerox13ster)
    "Maybe future OSes will add a rule... or give configurable options." (zahlman)