2013-04-13 133 views
-2

對於全名 - >用戶名轉換,我需要一個映射UTF-8 - > ASCII。非ASCII字符的漂亮ASCII表示?

例如: 邁克爾馬茲==>邁克爾麥爾茲==> michael.maerz

以及羅馬的中國文字

是否有庫或東西,可以實現這一點?

+1

對於那些編程語言? –

+2

另外,哪些口語? 「這封信Ä...芬蘭語和土庫曼語總是[æ];瑞典語和愛沙尼亞語的地區差異,以及字母在單詞中的位置,都可以[æ]和[ɛ]。爲[ɛ]「:http://en.wikipedia.org/wiki/%C3%84 –

+0

編程語言偏好按降序排列:Scala,Java,Python,PHP,... – ideaboxer

回答

1

ä轉換爲ae只是其中一個ascii represantations。見http://en.wikipedia.org/wiki/%C3%84

我認爲一個比較通用的方法是(假設你可以使用C#)

string Unaccent(string s) 
{ 
    return String.Join("", s.Normalize(NormalizationForm.FormD) 
          .Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) 
         ).Normalize(NormalizationForm.FormC); 
} 

Michael März =>Michael Marz

+0

'Normalize'似乎提供了一個很好的算法,謝謝。也許這也適用於適合JVM的語言? – ideaboxer

+0

@ user1625837當然還會有其他問題,比如'أحمد'=>'ahmad或ahmed或ahmet'。 (阿拉伯語spokens,如果我錯了,請糾正我) – I4V

+0

聽起來很合理。我唯一需要的是一個函數,它總是返回一個優雅的結果(優雅的形狀 - 這不是%編碼或類似的東西 - 但不一定意味着優雅)。在需要的情況下,用戶可以決定重命名她/他的名字。 – ideaboxer