我試圖評估不區分大小寫的UTF-8字符串比較的不同策略。不知道語言的情況下摺疊UTF-8
我已經閱讀了一些來自Unicode聯盟的材料,對ICU進行了實驗並試圖想出各種質量的實施方案。
多次我見過簡單案例映射和完整案例映射之間的不同文本,我想確保完全理解它們之間的差異。
當我閱讀它時,簡單案例映射是「上下文無關」的,即不需要知道有效載荷是什麼語言。由於突厥語「I /ı/İ/ i」的崩潰,這將給出近似的結果。
另一方面,完全大小寫映射需要知道有效載荷的語言才能執行映射。有了這些額外的信息,它可以採取特殊措施,以涵蓋作爲突厥語字符串的「Kim」應該成爲大寫的「KİM」的情況,而作爲英文字符串的「Kim」應該成爲大寫的「KIM」的情況。
我有這個權利嗎?
是否還有其他示例針對不同語言摺疊不同的「多面」代碼點?
謝謝!
更新:提到簡單案例映射爲語言無關的來源之一是ICU's documentation。我將其解釋爲Unicode的真相,但也許它只是實現的一個聲明?
所以他們都需要語言環境,對吧?我使用不使用CaseFolding.txt的第三方庫(PCRE),但僅使用來自UnicodeData.txt的案例信息,並且不需要語言上下文(就我所知,既不明示也不隱含)。我想這可能是簡單情況下的一個有效妥協。 – 2009-11-26 06:47:21
當然。如文件中所述,您需要知道何時忽略具有「T」狀態代碼的記錄。 – 2009-11-26 12:29:33
就我所見,T狀態代碼出現在CaseFolding中。txt,而不是UnicodeData.txt。但是你是否確實說過_correct_ folding只能通過語言環境的知識來完成?我正在尋找一種不需要上下文的妥協方案,並非100%完美......但也許這是通往溫暖之路的第一步? – 2009-11-26 15:10:04