strnicmp 相当于 UTF-8?
我该如何对两个 UTF-8 编码的子字符串执行不区分大小写的比较?本质上,我正在寻找 UTF-8 的 strnicmp
函数。
What do I use to perform a case-insensitive comparison on two UTF-8 encoded sub-strings? Essentially, I'm looking for a strnicmp
function for UTF-8.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
各种Unicode脚本中的大小写转换规则非常困难,它需要大量的大小写转换表。你自己无法做到这一点,你需要一个图书馆。 ICU就是其中之一。
Case conversion rules in various Unicode scripts are murderously difficult, it requires large case conversion tables. You cannot get this right yourself, you'll need a library. ICU is one of them.
strcoll
应该了解区域设置并正确对待 UTF8,至少如果它是区域设置的默认编码的话。如果不是,我仍然不知道。就像解决方法一样,您可以将多字节字符串转换为 wchars (mbrtowc),然后使用 wccasecmp,不幸的是它是 GNU 扩展,而不是标准库的一部分......也许不太有用。strcoll
should be locale aware and treat correctly UTF8 at least if it is the default encoding of the locale. If it is not, I have still no idea. Like a workaround, you can convert the multibyte string into wchars (mbrtowc) and then use wcscasecmp which unfortunately is a GNU extension, not a part of standard libraries... Not so useful maybe.