用于存储电子邮件地址的正确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并删除不必要的列将是一个更明智的选择?
我只是想确保我能够准确地找出哪些电子邮件地址肯定是相同的,哪些肯定是不同的。因此,我不允许在已注册的电子邮件下进行新用户注册,另一方面,对于另一个我有非唯一电子邮件的表,我想知道哪些电子邮件肯定是相同的。