2015-06-10 224 views
0

我目前面對一些問題,特殊字符的不同unicode表示,尤其是與口音或diaereses等。我寫了一個python腳本,它分析多個數據庫轉儲並比較它們之間的值。問題是,在不同的文件中,這些特殊字符的存儲方式不同。在某些文件中,這些字符是組成的,其他字符是分解的。正如我希望有從轉儲中提取的字符串總是在由表示,我嘗試添加以下行:正常化unicode不能正常工作

value = unicodedata.normalize("NFC", value) 

然而,這種解決我的問題只有在某些情況下。例如,對於變音器,它按預期工作。儘管如此,諸如,等字符仍將保留在已分解的模式中(e͏̈)。

我想通,有COMBINING字形JOINERË和分音符性格之間個字符數(U + 034F)。這是正常的,還是這可能是我的問題?

有誰知道,如何處理這個問題?

+0

我想說,如果你有_COMBINING GRAPHEME JOINER_,那麼它有一個原因,但它取決於文本語言(是的,即使是diaeresis)。我傾向於認爲這不是一個錯誤,那麼你不應該刪除它(除非你想進行一個_relaxed_比較),但你應該問這個語言的母語:它可能也是因爲原來的文本處理軟件,不是因爲原因的語言。 –

回答

0

U+034F組合圖形連接器的目的是確保在搜索/排序/規範化過程中某些序列保持不同。這是正確處理字符和組合標記所必需的,因爲它們在某些語言中使用Unicode算法。從Unicode標準(頁805)的section 23.2

U + 034F結合字形木匠(CGJ)被用來影響相鄰字符的語言敏感覈對 和搜索的目的的核對 。它也被用來區分否則是經典等價的序列。

...

反過來,這意味着兩個組合標記之間的結合字形木匠的插入會阻止正常化的切換這兩個結合標記的位置,不顧自己的組合類。

在一般情況下,你應該沒有關於爲什麼它被插在首位一些特殊的知識刪除CGJ。