c++ - Linux环境中空格前的Unicode排序号
问题描述
在我的 Linux 环境中,我使用u8_casecoll
对字符串进行排序。将本地设置为“en_US.UTF-8”,以下是排序顺序。
- “成员 1_LN”
- “会员群”
但是在windows环境下,我是用CompareStringW
排序的,下面是排序顺序。
- “会员群”
- “成员 1_LN”
我需要使 Linux 环境表现出与 Windows 相同的行为。有人可以帮助调整 Linux 代码以获得预期的排序顺序吗?提前致谢。
下面是 Linux 环境的 C 代码。
#include <errno.h>
#include <locale.h>
#include <unitypes.h>
int main()
{
setlocale(LC_ALL, "en_US.UTF-8");
uint8_t text1[] = "Member1_LN";
uint8_t text2[] = "Member Group";
int ret_val = 0;
int resultp = 0;
ret_val = u8_casecoll(text1,u8_strlen(text1),text2,u8_strlen(text2), NULL, NULL, &resultp);
if(0 == ret_val)
{
printf("resultp = %d\n", resultp);
printf("expected = 1\n");
}
else
{
int err = errno;
printf("u8_casecoll ret = %d errno = %d\n", ret_val, err);
}
return 0;
}
输出:
resultp = -1
expected = 1
解决方案
推荐阅读
- c - C:如何检查内存地址是否已写入?
- arrays - Marshal 一个 JSON Marshal 兼容映射到 XML
- php - MongoDB 在单个请求中使用 $in 2 次
- mysql - 无法在 PHP My Admin 中使用事件调度程序,如何为 cron 制作 PHP 文件?
- arrays - 如何转换 Hive 数组
在导出数据时键入 Vertica varchar - html - Safari 浏览器中的“高度:内在”是什么?
- docker - 无法使用 REST 请求解锁 WSO2 身份服务器用户
- javascript - 如何将价值从一个组件发送到另一个组件
- c++ - 检查数组中的元素位置并在检查后打印新行
- android - 无法解决:com.firbaseui:firebase-ui-database:3.2.2