子域中的Utf-8?

子域中的Utf-8?,utf-8,dns,subdomain,idn,Utf 8,Dns,Subdomain,Idn,可以在子域中使用UTF-8吗?如果是的话,哪些字符是允许的,不能混合编码是如何工作的 我尝试过RTFM,但是Google没有太多的功能,子域没有什么特别之处。给定域名foo.example.com是一个有序的标签列表(foo,example,com)。因此,您可能想知道是否可以在给定的标签中使用UTF-8 低级答案是,标签定义为: <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] <let-di

可以在子域中使用UTF-8吗?如果是的话,哪些字符是允许的,不能混合编码是如何工作的


我尝试过RTFM,但是Google没有太多的功能,子域没有什么特别之处。给定域名
foo.example.com
是一个有序的标签列表(
foo
example
com
)。因此,您可能想知道是否可以在给定的标签中使用UTF-8

低级答案是,标签定义为:

<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
<let-dig> ::= <letter> | <digit>
<letter> ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case
<digit> ::= any one of the ten digits 0 through 9
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig-hyp> ::= <let-dig> | "-"
::=[[]]
::=  | 
::=大写字母A到Z和小写字母A到Z中的任意一个
:=十位数字0到9中的任意一位
::=  |  
::=  | "-"
这意味着您只能在标签中找到
[-a-zA-Z0-9]

但是,用于编码Unicode字符,简而言之,包含其他字符的标签用:
“xn--”+punycode(nameprep(label))
编码

至于限制,至少:

  • for字符不能在IDN标签中(U+002E、U+3002、U+FF0E、U+FF61)

仅链接的答案通常是不好的(我也碰巧找不到与子域的实际问题有多大关系)