相信大家在 namebase.io  网站上拍卖 handshake 域名的时候,看到过这种域名。大家理所当然的认为括号内部的表情包可以用来当做域名,与此同时也可以当做 唯一id 来登录各种 handshake id 登录的APP 比如 news.namebase.io 。 但是,实际上并非如此。 

实际上 xn--5p9h 才是域名的真实内容,他是 emoji 表情 ? 的内部表示。 正如大家所知,域名里可以出现的字符是有限的,比如字母,数字,符号 等等,重要: 这个字符的总数是有限的。然而,在域名里,我们希望看到各国的文字,比如中文域名,日文域名,emoji 表情包域名等等,这些东西却是无限的。那么问题来了,如何用有限的字符集来标识无限种类的域名呢?

解决这个问题,就需要引入一个punny code 的概念,他是一种 编码方式,他可以把有限的几个字符,组合起来,拼装成为一个 非字符集以外的字符(表情等)。 

还有另外一个问题,punny code 代表了哪个emoji 表情,代表了哪个中文,这个在不同浏览器,不同设备上是不一样的。换句话说,同一个punny code 编码在不同的设备,不同的浏览器上,可能表示的是不一样的。 大家如果感兴趣,可以多换几个设备参看显示的样子。更有甚者,有些编码的emoji 表情可能根本不支持。 这些都是大家需要考虑的。 所以,在拍卖 emoji 或者外文域名之前,我们强烈建议大家了解这些。 

大家应该意识到有段时间 namebase.io 上的 emoji 表情不显示了,这个是因为,他们之前的punny code 库 (https://www.npmjs.com/package/punycode) 对emoji 表情支持的不是很好。 如今他们已经更换了最新的库(https://www.npmjs.com/package/idna-uts46-hx ) ,新库对emoji 在不同浏览器上的兼容性更好。做技术的同学,可以考虑使用这个库看看。  

文章原文参考

https://help.namebase.io/article/6x9djbth9h-why-do-emoji-domains-begin-with-xn-strings