database-design - DNA转换域名的最大长度是多少?

标签 database-design dns maxlength idn punycode

首先要做的是:

在将每个域名转换为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/

相关文章:

python - Postgres 性能提示加载数十亿行

c# system.net.dns 通用应用程序 (W10) 不工作

email - 来自没有 MX 记录的子域的 Mailgun 邮件被某些邮件提供商拒绝

scala - 在 spark 中遍历每一列并找到最大长度

MongoDB数据库架构

mysql - 在数据库中创建字段

docker - Docker-在DNS缓存中未找到主机名

html - maxlength 属性不适用于 javafx webview

android - 有没有办法在一定数量的字符后自动让 TextView 换行?

mysql - 如何将空值传递给外键字段?