首先要做的是:
在将每个域名转换为IDNA版本之后,我将多个域存储到数据库中。我需要知道IDNA转换的域名可以具有的最大长度,因此我可以定义数据库字段的最大长度。
已知事实:
现在,我知道域名(包括任何子域)中的最大字符数为255个字符。
我丢了的地方:
乍看之下很容易,但是...这是否意味着国际字符的常规ascii字符(想想UTF-8编码)?
举一个例子:域“müller.de”有9个字符,而我忽略了“ü”是一个国际字符,需要表示更多的字节。 IDNA版本的“müller.de”是“xn--mller-kva.de”,具有16个字符。这表明最大长度上肯定存在差异,具体取决于“是否”是IDNA转换的。
取决于它们表示的是哪种字符,最大255个字符可以是国际字符版本,IDNA转换版本,甚至两者都可以。
这就是我失去它的地方...特别是,因为我必须考虑到并非所有域名都是理智的,例如“öüßüöäééêê.example.äöüßüöäééêê-äöüßßööééê..test.äöüßßööééêê.com”之类的东西,甚至更糟被期望。
因此,“猜测”和“希望达到最好”不是一个选择。我一定要知道...
问题是:
基于一个已知的事实,域名(包括任何子域)中的最大字符数为255个字符... IDNA转换的域名的最大长度是多少?
还是说IDNA转换版本(punycode)也限制为255个字符(这意味着具有国际/Unicode字符的域的unicode表示实际上有更短的限制,因为其IDNA转换版本必须遵守255个字符限制)?
最佳答案
我的理解是,在IDNA转换之后,应将255个字符的限制视为。
这是因为DNS记录具有此字符限制,并且通常DNS记录只能包含字母,数字和连字符(from Wikipedia)。因此,DNS服务器使用IDN的Punycode版本作为记录,而不是Unicode版本。
关于database-design - DNA转换域名的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717378/