strcoll中的Unicode规范化
Unicode normalization in strcoll
规范等价的Unicode字符串排序是否相等?有时
#include <iostream>
#include <cstring>
#include <clocale>
int main()
{
std::setlocale(LC_COLLATE, "en_US.UTF-8");
if (std::strcoll("xc3xa9", "exccx81"))
std::cout << "FAIL: No Unicode normalization here" << std::endl;
else
std::cout << "WIN: Unicode normalization is performed" << std::endl;
}
这个程序在我的Cygwin化的Windows机器上获得了胜利,在我能拿到的每个Linux系统上都失败了。
这是预期的行为吗?有Linux系统可以产生WIN吗?Mac OS X呢?FreeBSD?
我知道我可以规范化并与第三方库进行规范等价。我对UTF-8语言环境的标准排序规则很感兴趣。
这个问题的灵感来自于这个问题
据我所知,在C、C++和POSIX标准中都没有提到Unicode规范化。
因此,实现可能会将规范化留给程序员明确地完成。
更明确地说,在油嘴滑舌的欧洲地区,显然使用ISO 14651作为排序算法。Unicode排序规则FAQ暗示ISO 14651不进行规范化:规范等价物的统一处理被列为UCA和ISO 14651之间的区别。
相关文章:
- C++ - Unicode Newline
- 如何将unicode字符串从C++传递到delphi
- ascii 和 unicode 在处理级别有什么区别吗?
- 无法从 std::string 中提取C++ Unicode 符号
- 提升区域设置规范化带状字符,但不规范化重音
- MinGW64 - Unicode 源文件错误?
- 使用 Visual Studio 2019 编译 Unicode
- 将ANSI C字符串转换为UNICODE
- 如何从 oracle 数据库 c++ 读取 unicode
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++ wmain 函数错误时使用 Unicode
- C++:打印 Unicode 字符
- QTextStream,用于打印英语和Unicode 16
- 将 unicode 字符串与 c ++ 符号进行比较?
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- 在没有ICU或boost的情况下规范化C++中的unicode字符
- strcoll中的Unicode规范化
- 什么决定了c++中Unicode字符串的规范化形式
- Unicode规范化C++源代码参考