2011-03-01 51 views
1

我正在研究一個Web應用程序(使用Ruby),我最終希望能夠被世界上任何地方的人使用。考慮到這一點,支持非ASCII字符至關重要。但是,我不希望數據庫在字段中填充「噪音」字符,例如用戶名等。清理Unicode輸入的最佳做法

在這些情況下是否有任何公認的處理Unicode輸入的最佳做法而不疏遠用戶?處理用戶名中的同形異義詞以使模擬更難的任何想法?

我的一些想法至今 - 存儲或查詢

  • 使用它過濾非打印字符
  • 限制允許輸入的順序組合變音符號的號碼前

    • 文本規範化

    有任何進一步的想法,還是我爲自己做了不必要的工作?

    謝謝。

  • +1

    老實說,我認爲你不僅爲自己做更多的工作,而且破壞了你陳述的目的。如果你想讓你的應用程序支持國際使用,它應該接受國際用戶名,密碼,你有什麼。數據庫發生了比在一個字段中包含阿拉伯字符更糟糕的事情。 – kojiro 2011-03-01 01:55:38

    +0

    目標是讓人們能夠註冊阿拉伯語/日語/韓語/梵文/克林貢/ whathaveyou用戶名,但儘可能降低來自諸如同形同情假冒等事情的風險。 – Leynos 2011-03-01 08:30:03

    回答

    3

    http://www.ietf.org/rfc/rfc3454.txt會告訴你你應該做什麼,也就是說擔心正常化和安全問題。

    +0

    謝謝。我是否理解LibIDN提供了RFC 3454的實現,這是我應該使用的嗎? – Leynos 2011-03-01 08:39:34

    +0

    我相信是的。我從來沒有自己做過。 – bmargulies 2011-03-01 15:02:56