我有一個數據集,它混合使用unicode字符\ u0421,'С'和\ u0043,'C'。是否有某種unicode比較認爲這兩個字符相同?到目前爲止,我已經嘗試了幾種ICU排序規則,包括俄羅斯規則。西里爾文'С'和拉丁文'C'的Unicode對比
4
A
回答
4
沒有統一字符編碼的比較,它根據字形的視覺標識將字符視爲相同的字符。然而,Unicode技術標準#39,Unicode Security Mechanisms涉及「可混淆」 - 由於視覺識別或相似性而可能彼此混淆的字符。它包括一個數據文件confusables以及「intentionally confusable」對,即「當使用協調字體設計時,任何特定字體的字形可能會被設計爲相同形狀的字符」,主要由拉丁語和西里爾語或希臘語對組成字母,如C和С.您可能需要編碼您自己使用這些數據,因爲ICU似乎沒有任何與可疑概念相關的任何內容。
1
當你看看http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt時,你會看到一些代碼位置被註釋爲使用中類似的代碼點;但是,我不知道任何涵蓋腳本之間視覺相似性的廣泛列表。您可能想要使用故意拼寫錯誤搜索URL欺騙,這是在他們提出punycode時討論的。除此之外,您最好的選擇可能是使用正則表達式在數據之外搜索字符,然後編譯一系列特殊文本修復程序,如text = text.replace /с/, 'c'
。
相關問題
- 1. 從西里爾文轉換爲拉丁文C
- 2. 將西里爾文字母替換爲拉丁文
- 3. 字母轉換 - 西里爾文到拉丁文
- 4. 函數將西里爾文轉換爲拉丁文
- 5. icu4j西里爾語拉丁語
- 6. 從西里爾文到拉丁語ICU4j的音譯java
- 7. NSString與西里爾文到UTF8 /拉丁編碼
- 8. 如何音譯西里爾以拉丁文字
- 9. 檢查字符串是拉丁字母還是西里爾文
- 10. 西里爾的NSString爲Unicode在Objective-C
- 11. libGdx - 西裏爾字母和拉丁字符的不同字體
- 12. 的preg_match分不清拉丁和西裏爾字母
- 13. 休眠和西里爾文
- 14. QPrinter和西里爾文
- 15. CGContextShowTextAtPoint和西里爾文本
- 16. 塞爾維亞拉丁和塞爾維亞西里爾在android中
- 17. 西里爾文HelpProvider
- 18. 處理西裏爾字母代替拉丁字符
- 19. 在MediaWiki中設置自動西里爾 - 拉丁轉換
- 20. 更改幾個拉丁字母西里爾
- 21. Zend_Controller_Router_Route_Regex不匹配拉丁,但只有西裏爾字母
- 22. 從拉丁字符得到西里爾結果
- 23. Python拉丁字符和Unicode
- 24. Yaws西里爾文輸出
- 25. Ubuntu西里爾文件名
- 26. 如何str_replaceЃ(西里爾文)
- 27. Doctrine 2 +西里爾文
- 28. Wkhtmltoxsharp no西里爾文
- 29. mkdir utf-8西里爾文
- 30. Wordpress西里爾文編碼
運氣不好我認爲西里爾文C是拉丁文S.你可以編一個CharsetEncoder/Decoder。然而,爲什麼不是一個處理'AaBCcEeHKMOoPpTUuXxYy'(大約是)的'Comparator'。請注意,塞爾維亞人知道'j',白俄羅斯人是'i'。也許你可以使用Arial Unicode MS的字體字形,並派生出一個視覺相似度表。 –
請注意,對於UTF16,構建一個從一個字符集到另一個字符集的65K字符數組是可行的。儘管如此,轉到UTF32,它變得太大而不切實際。 –