我正在使用ML 8.0-6.3
字符:ı
word:Araştırmalari
xdmp:diacritic-less()
并未将上述变音符号转换为小写i
最初,我认为这不是有效的变音符号。但是根据此网站diacritic characters,它是有效的变音符号。
在链接中看到该行
0131ıdotlessi小写字母DOTLESS I
请对此进行更多说明。
由于此diacritic-insensitive
查询无法正常工作。
答案 0 :(得分:2)
通常,人们希望删除变音符号,但是我看不到有任何变音符号。
无论如何,这是Unicode标准所涵盖的,而不是看起来是否相似。看一下Block U0100。您需要能够将字符分解为基本字符和变音符号,例如0130。0131甚至没有兼容级别都没有。
图表上的信息位于About the Unicode charts。
答案 1 :(得分:1)
无点的我有点奇怪。
https://www.unicode.org/charts/PDF/U0100.pdf
0131ı拉丁文小写字母I
土耳其语,阿塞拜疆
大写字母是0049 I
→0069我是拉丁文小写字母i
https://en.wikipedia.org/wiki/Dotted_and_dotless_I
在通常的排版中,当小写字母i与其他变音符号结合使用时,通常会在添加变音符号之前删除点;但是,Unicode仍然列出了包括点号i的等效组合序列,因为从逻辑上说,它是被修改的普通点号i字符。
大多数Unicode软件将ı到I大写,将İ到i小写,但是,除非特别为土耳其语进行了配置,否则它将I到i小写,将i到I大写。因此,先大写然后小写,反之亦然。>
因此,尽管它不是变音符,但您可以通过一系列调用来运行该字符串以更改大写/小写,从而导致将ı
转换为I
,然后转换成{{1 }}。
i
将产生:upper-case("Araştırmalari") => lower-case() => xdmp:diacritic-less()
但是,这将导致一个arastirmalari
字符串值,这可能不是您想要的,但是如果用作搜索词,则可能对您有用。
更好的解决方案:
如果存在特定的(非变音符)字符,例如无点i lower-case()
,但通过调用ı
并未将其标准化为期望的字符,则您可以应用您的使用fn:translate()
对变音符进行规范化后,自己替换字符:
xdmp:diacritic-less()
返回:fn:translate(xdmp:diacritic-less("Araştırmalari"), "ı", "i")