.NET StringComparison与Cosmos DB字符串排序等价性技术咨询
Cosmos DB字符串排序规则与.NET StringComparison的等价性
问题1:是否有官方文档明确说明Cosmos DB中字符串的比较与排序方式?
Cosmos DB的字符串比较和排序默认采用UTF-8二进制序,官方明确其排序逻辑基于字符串的UTF-8编码字节值进行对比,不涉及语言文化区域特性,属于无区域性的二进制比较规则。
问题2:.NET中的StringComparer.Ordinal与Cosmos DB的字符串比较是否100%等价?
该假设是正确的。StringComparer.Ordinal基于字符串的UTF-16编码字节值做二进制比较,而Cosmos DB存储字符串使用UTF-8编码:
- 对于ASCII字符,UTF-8和UTF-16的编码字节完全一致,比较结果无差异;
- 对于非ASCII字符,两者的二进制比较逻辑等价,最终的排序、比较结果完全匹配。
实际业务场景中,两者的字符串比较行为可以做到100%一致。
内容的提问来源于stack exchange,提问作者Mo B.
相关产品推荐
相关产品推荐

