gpt4 book ai didi

c - strcmp 会按代码点顺序比较 utf-8 字符串吗?

转载 作者:太空狗 更新时间:2023-10-29 17:10:36 49 4
gpt4 key购买 nike

在 C 程序中,我想按 Unicode 代码点顺序对有效 UTF-8 编码字符串列表进行排序。没有整理,没有语言环境意识。

所以我需要一个比较函数。编写这样一个遍历 unicode 字符的函数很容易。 (我恰好在使用 GLib ,所以我将使用 g_utf8_next_char 进行迭代并比较 g_utf8_next_char 的返回值。)

但出于好奇和可能的简单性和效率,我想知道的是:一个简单的字节对字节 strcmp(或 g_strcmp)实际上会做吗同一份工作?我认为它应该,因为 UTF-8 encodes首先是最高有效位,需要以 N+1 字节编码的代码点将比需要以 N 字节编码的代码点具有更大的初始字节。

但也许我遗漏了什么?提前致谢。

最佳答案

是的,UTF-8 保留代码点顺序,因此您可以只使用 strcmp。这是 UTF-8 的(许多)优点之一。

需要注意的是,Unicode 中的 codepoints 是 UTF-32 值,一些谈论按“codepoint”顺序整理 Unicode 字符串的人实际上错误地使用了“codepoint”一词来表示“UTF” -16 代码单元”。如果您希望顺序匹配 UTF-16 代码单元排序规则,则需要做更多的工作。

关于c - strcmp 会按代码点顺序比较 utf-8 字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329781/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com