我正在研究一个Web应用程序(使用Ruby),我最终希望能够被世界上任何地方的人使用。考虑到这一点,支持非ASCII字符至关重要。但是,我不希望数据库在字段中填充“噪音”字符,例如用户名等。清理Unicode输入的最佳做法
在这些情况下是否有任何公认的处理Unicode输入的最佳做法而不疏远用户?处理用户名中的同形异义词以使模拟更难的任何想法?
我的一些想法至今 - 存储或查询
- 文本规范化
有任何进一步的想法,还是我为自己做了不必要的工作?
谢谢。
我正在研究一个Web应用程序(使用Ruby),我最终希望能够被世界上任何地方的人使用。考虑到这一点,支持非ASCII字符至关重要。但是,我不希望数据库在字段中填充“噪音”字符,例如用户名等。清理Unicode输入的最佳做法
在这些情况下是否有任何公认的处理Unicode输入的最佳做法而不疏远用户?处理用户名中的同形异义词以使模拟更难的任何想法?
我的一些想法至今 - 存储或查询
有任何进一步的想法,还是我为自己做了不必要的工作?
谢谢。
http://www.ietf.org/rfc/rfc3454.txt会告诉你你应该做什么,也就是说担心正常化和安全问题。
谢谢。我是否理解LibIDN提供了RFC 3454的实现,这是我应该使用的吗? – Leynos 2011-03-01 08:39:34
我相信是的。我从来没有自己做过。 – bmargulies 2011-03-01 15:02:56
老实说,我认为你不仅为自己做更多的工作,而且破坏了你陈述的目的。如果你想让你的应用程序支持国际使用,它应该接受国际用户名,密码,你有什么。数据库发生了比在一个字段中包含阿拉伯字符更糟糕的事情。 – kojiro 2011-03-01 01:55:38
目标是让人们能够注册阿拉伯语/日语/韩语/梵文/克林贡/ whathaveyou用户名,但尽可能降低来自诸如同形同情假冒等事情的风险。 – Leynos 2011-03-01 08:30:03