Unicode Autocad用于比较图层名称的无大小写匹配算法是什么?
Autocad DXF和DWG文件使用unicode字符串来标识图层。我通过实验确定Autocad必须采用某种大小写折叠和规范化(Autocad认为“groß”和“GROSS”是相同的,“Am\U+00e9lie”和“Ame\U+0301lie”是相同的)。我想在我自己的软件中知道,根据Autocad,两个图层名称是否相同。Unicode标准的默认无大小写匹配算法似乎给了我正确的答案,但我想确定一下Unicode Autocad用于比较图层名称的无大小写匹配算法是什么?,unicode,autocad,unicode-normalization,teigha,Unicode,Autocad,Unicode Normalization,Teigha,Autocad DXF和DWG文件使用unicode字符串来标识图层。我通过实验确定Autocad必须采用某种大小写折叠和规范化(Autocad认为“groß”和“GROSS”是相同的,“Am\U+00e9lie”和“Ame\U+0301lie”是相同的)。我想在我自己的软件中知道,根据Autocad,两个图层名称是否相同。Unicode标准的默认无大小写匹配算法似乎给了我正确的答案,但我想确定一下 任何人都可以确认默认的无大小写匹配是Autocad使用的算法吗?或者如果它不是什么 是否有测试输
我没有明确的答案,但定义了四种无大小写匹配算法:
Am\U+00e9lie
和Ame\U+0301lie
匹配,因此可以明确排除此变体- 如果
(带有兼容映射的拉丁小连字IJ)与\U+0133
匹配,则Autocad似乎使用了兼容规范化,可以排除规范无大小写匹配(D145)IJ
- 如果
(带有属性Default\U Ignorable\U code\U Point的软连字符)和A\U+00adB
匹配,则Autocad似乎忽略了默认可忽略字符,可以排除兼容性无大小写匹配(D146)AB
当然,Autocad可能不使用任何一种Unicode算法,但上面的测试应该有助于缩小范围。请考虑发布任何附加的结果来帮助其他用户。< /P> < P>我截取API调用,发现Windows上的AutoCAD 2018使用<代码> COMPARESTRIGWW(LoaleEuSuuleSudio,NoalthNealCaseCaseSotjStReGrand,…)<代码>检查层名称是否相等。< /P>依赖于区域,而不是算法。@LưuVĩnhPhúc这篇博文是关于案例映射的,但问题是关于案例折叠的<代码>ß通常会在任何语言环境下折叠成
ss
。此外,该问题还询问了Unicode默认的无大小写匹配算法,该算法不依赖于语言环境。@LưuVĩnhPhúc大小写操作在不同的语言中肯定是不同的。Unicode标准定义了默认大小写操作,这些操作应该是所有语言的良好通用默认值,但我不知道这是多么正确。我的问题是Autocad是否使用由Unicode或其他系统定义的默认大小写折叠算法。Autocad可能会使用大量潜在的大小写折叠算法,我想确定我的算法是否正确。我尝试了这些字符,排除了除D147以外的所有算法。