【问题标题】:Example with different sort order between raw char and unicode?原始字符和unicode之间排序顺序不同的示例?
【发布时间】:2019-09-25 14:23:01
【问题描述】:

我想测试一些程序是否可以识别 Unicode 字符并正确排序。

任何人都可以提供一些示例 Unicode 字符,其原始字符表示的排序方式与 Unicode 表示不同吗?谢谢。

【问题讨论】:

  • 排序顺序不是字符的固有属性(可能在字节排序的意义上除外)。要对 Unicode 进行排序,您需要一个 Unicode 排序算法。这意味着您的问题没有答案,除了您使用的任何特定算法,这通常是非常特定于语言的。即使有这样一个明确的答案,资源请求也不是 SO 的主题。
  • 换一种说法,coreutils sort 使用 LC_COLLATE=C 和 LC_COLLATE=UTF8 对哪些字符进行不同的排序?这是关于软件测试的。它应该与 SO 相关。
  • 这确实更具体。我建议用它来更新你的问题。
  • 什么是“原始字符表示”?内存中的字节数?在这种情况下,它取决于编码形式。在 UTF-16LE 中,所有字符的排序与其原始字节编码不同。

标签: unicode python-unicode unicode-string


【解决方案1】:
>>> from pyuca import Collator
>>> sorted(["cafe", "caff", "café"])
['cafe', 'caff', 'café']
>>> sorted(["cafe", "caff", "café"], key=Collator().sort_key)
['cafe', 'café', 'caff']

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 2012-12-17
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多