正确区分MySQL中的UTF-8电子邮件地址

时间:2013-04-14 12:26:59

标签: mysql email utf-8 collation idn

用于存储电子邮件地址的正确MySQL排序规则是什么?

我了解电子邮件地址可以是UTF-8。

但是,如果我想将输入的电子邮件与数据库中的电子邮件进行比较,我该如何处理呢?

这些电子邮件地址是否始终属于同一个邮箱?

email@schloß.de = email@schloss.de
schloß@test.de = schloss@test.de

如果确实如此,utf8_general_ci将是正确的选择,但如果没有,我将使用哪种排序规则?

如果我发送电子邮件至schloß@test.de,并且schloss@test.de有100%保证会到达同一个邮箱吗?与test@schloss.de和test@schloß.de相同。

因为在utf8_general_ciß= ss。

我可以在IDN RFC描述中看到schloß= schloss,但是左边的电子邮件地址呢?那些在IDN中不允许但在UTF 8中存在的零宽度字符呢?它们在UTF-8 MySQL排序规则中是否也被忽略了?

另外,我需要不区分大小写的匹配。

我目前正在将电子邮件转换为小写并将其存储在单独的列中,email_bin使用utf8_bin排序规则,然后我将其与email_bin_lower = LOWER(user_input_email)匹配,但这是唯一的方法吗?也许使用utf8_general_ci或utf8_unicode_ci并删除不必要的列将是一个更明智的选择?

我只是想确保我能够准确地找出哪些电子邮件地址肯定是相同的,哪些肯定是不同的。因此,我不允许在已注册的电子邮件下进行新用户注册,另一方面,对于另一个我有非唯一电子邮件的表,我想知道哪些电子邮件肯定是相同的。

0 个答案:

没有答案