我们正在升级我们的系统以获得IDNA支持,但我目前正在努力进行域名搜索。在我们的域名组合中,您可以搜索域名。 IDNA域名在我们的数据库中保存为A标签(café-modern.com
保存为xn--caf-modern-d7a.com
),我们只需在浏览器中显示它时将其转换为U标签。
问题是这完全打破了我们的搜索
当有人搜索café-modern.com
时,我可以轻松地将其转换为IDNA值,并在数据库查询的WHERE domain_name LIKE ?
部分中使用该值,但有人搜索café
时xn--caf-dma
café-modern.com
})也应该找到{{1}}
一个解决方案是将A标签和U标签值保存在数据库中,但是我希望保留这些值作为最后的手段,因为数据集非常大,我希望将数据库架构保持为尽可能简单。
答案 0 :(得分:0)
这很正常。我一直在使用类似的系统。我认为你的设计不正确。不应该像(xn--caf-modern-d7a.com)那样保存,你可以像DB(café-modern.com)一样保存。在DB上录制时,必须将IDNA值转换为UTF8值(或另一个值)。因此,您可以在café-modern.com
café
和WHERE domain_name LIKE ?