首先:
我将多个域名转换为其IDNA版本并存储到数据库中。我需要知道这种IDNA转换后的域名可能具有的最大长度,以便我可以定义数据库字段的最大长度。
已知事实:
现在,我知道域名(包括任何子域)的最大字符数为255个。
迷惑所在:
乍一看很容易理解,但是...这是否意味着常规ASCII字符或国际字符(想想UTF-8编码)?
例如:"müller.de"这个域名有9个字符,当我忽略“ü”是一个需要更多字节来表示的国际字符时。 "müller.de"的IDNA版本是"xn--mller-kva.de",它有16个字符。这表明,在最大长度方面,根据是否进行了IDNA转换,差异肯定存在。
根据所指的字符类型,255个字符的最大长度可能是国际字符版本、IDNA转换版本或两者兼备。
这就是我有点困惑的地方...特别是,因为我必须考虑到并非所有域名都是健全的,而像"öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com"这样的域名甚至更糟糕。
因此,“猜测”和“盼望最好的结果”不是一个选项。我需要确切的答案...
问题是:
基于已知事实,即域名(包括任何子域)的最大字符数为255个...经过IDNA转换后的域名的最大长度是多少?
他们是否是指 IDNA 转换版本(punycode)也受到 255 个字符的限制(这意味着使用国际/Unicode 字符的域名在其 Unicode 表示中实际上具有更短的限制,因为它们的 IDNA 转换版本必须遵守 255 个字符的限制)?