In my Linux environment, I use u8_casecoll
to sort strings. With local set to "en_US.UTF-8", below is the sort order.
- "Member1_LN"
- "Member Group"
But in Windows environment, I use CompareStringW
to sort, and below is the sort order.
- "Member Group"
- "Member1_LN"
I have a requirement to make the Linux environment exhibit the same behavior as Windows. Can someone help to tweak the Linux code to get the expected sort order? Thanks in advance.
Below is the C code for the Linux environment.
#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;
}
Output:
resultp = -1
expected = 1