(Translated by https://www.hiragana.jp/)
国际化域名编码 - 维基百科,自由的百科全书 とべ转到内容ないよう

くに际化いきめい编码

维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
重定しげさだこうPunycode

くに际化いきめい编码[1]英語えいごPunycodeいち表示ひょうじ統一とういつASCII码的有限ゆうげんてきしゅうれいちゅうぶん上海しゃんはいかい编码为“fhqz97e”。

國際こくさいいきめいへん碼的目的もくてきざいくに际化いきめい标签(IDNAてきかまちちゅう使つかい这些(语言てきいきめい以编码为ASCII。编码语法ざいぶんRFC 3492 ちゅう规定。

编码过程

[编辑]

RFC 3492ちゅう说明:國際こくさいいきめいへん碼是いち种称为Bootstringてきさら普遍ふへんてき算法さんぽう实例,它允许由部分ぶぶん基本きほんてき编码集合しゅうごう组成てきくしただ一表示由更大编码集合组成的任何字符串。配合はいごう統一とういつ碼文ほんてき特性とくせい國際こくさいいきめいへん碼定义了一般いっぱんBootstring算法さんぽうてきさんすうほん节以とく语字くし"bücher"(书籍)为例,えんじしめせ國際こくさいいきめいへん碼的编码过程,该字くし编码为"bcher-kva"。

ぶん离ASCII

[编辑]

くびさきくしちゅうてき所有しょゆうASCIIはた直接ちょくせつ从输にゅう复制いた输出,にんなん其他はたとべ过。れい如,"bücher"复制为 "bcher"。如果ゆうにんなん复制(そく输入ちゅういたりしょうゆういち个ASCII),则在输出ちゅう附加ふかいち个ASCII连字れい如,"bücher"复制为"bcher-",其中"ü"ASCII发生复制)。

よし于连本身ほんみASCIIいん此可以出现在输入ちゅう,并将复制いた输出ちゅう。这并かい引起歧义,いん为如はて输出包含ほうがん连字添加てんかてき连字总是さいきさきいち个,这标こころざしASCIIてき结束。

编码ASCII

[编辑]

对于输入てきASCII統一とういつ碼中碼位ゆかりてい至高しこう順序じゅんじょ,编码かい模擬もぎしょうASCIIいちいち插入そうにゅうかいじょASCIIてきくし過程かてい, 计算ごとASCII對應たいおうてきさん数字すうじinh

  • i 表示ひょうじ该非ASCIIざい输入くしちゅうてき以0为开はじめ索引さくいんてき插入そうにゅう位置いち(类似于如C语言とうてき编程语言,よう0らい表示ひょうじ该非ASCII输入くしてきだいいち个字)。
  • n 表示ひょうじ该非ASCIIざい統一とういつ碼中てき码位,减去127(127为最きさきいち个ASCII
  • h 表示ひょうじ該非ASCII插入そうにゅう可能かのうゆうてき插入そうにゅう位置いち。如"ü"よう插入そうにゅうかい"bcher"ちゅう可能かのうゆう"übcher"いた"bcherü"6位置いちきょう插入そうにゅう

编码ずいきさき计算乘法じょうほうn*h+i并将いたてき数字すうじ编码为一くし36进制てき可變長かへんちょう數字すうじはた这些数字すうじ转化为ASCII码,并将结果附加ふかいた输出くしきさき每次まいじ計算けいさん,該ASCIIかい插入そうにゅうかいじょASCIIてきくしいん此hかい增加ぞうか1。 なみ且在計算けいさんいちASCIIてき統一とういつ碼碼,該碼需減うえいちASCII碼位。

编码方式ほうしき为:0 -> 'a', ..., 25 -> 'z', 26 -> '0', ..., 35 -> '9', 数字すうじてき数字すうじしょうはしじょ排列はいれつ

此處ここてき36进制てき编码なみ通常つうじょう意義いぎてき36しんせい整數せいすう,而是いちしゅ变长てき整数せいすうまい数字すうじてきさい重要じゅうよう(most significant)てきれい数字すうじ "123 "ちゅうてき "1")ざいぼつゆう上下じょうげぶんてきじょう况下以识别的。よし此,数字すうじ以无需分へだた连接,かいかげ原始げんし数字すうじてき识别ひっさげただし此處ここらごと數字すうじしんてきもんおりばつ不同ふどうなみまいみな36しん

よう于国际化いきめいてきACEぜん

[编辑]

为了防止ぼうしくに际域めいちゅうてき连字國際こくさいいきめいへん碼解码,かいざい在国ざいこく际化いきめいちゅうてき國際こくさいいきめいへん序列じょれつぜんじょうくしxn--。这被しょう为ACE(ASCII Compatible Encoding)。[2]

いん此,いきめい"bücher.tld"しょうかい以ASCII形式けいしき表示ひょうじ为"xn--bcher-kva.tld"。

かい码器

[编辑]

かい码器具有ぐゆう两个じょう态变りょうinてき有限ゆうげんじょう态机

iくしてき索引さくいん,范围从0(代表だいひょう可能かのう插入そうにゅうてき开始)いた扩展くしてきとうぜん长度(代表だいひょう可能かのう插入そうにゅうてき结束)。i从0开始。

n从128开始(128表示ひょうじだいいち个非ASCIIてき码位)。

じょう态递ぞういち个单调函すう。一个状态转移要么增加i,如果i达到最大さいだい,就重おけi为零并增加ぞうかnした一个状态转移时,继续增加ぞうかiざいまい个状态下,ゆかりn表示ひょうじてき码位よう么被插入そうにゅうよう么不插入そうにゅう

编码生成せいせいてき数字すうじ代表だいひょうざい插入そうにゅうぜんようとべ过多しょう可能かのうてき结果。

ざいくし "bcher "ちゅうゆう六个位置可以插入一个字符(包括ほうかつだい一个字符前和最后一个字符后)。ざいさいきさきいち个ASCII码位(127)かず "ü"(252,さんひしげ丁字ていじはは补充-1间有124个码ゆういち个 "ü "てき插入そうにゅう位置いち必须とべ过(位置いち0,そくざい'b'まえ)。

いん此,ざいいた达正确位置いちまえかい码器はたとべ过共(6×124)+1=745个可能かのうてき插入そうにゅう位置いちざい该字插入そうにゅうきさきはたゆう七个可能的地方插入下一个字符。

はた码号おもしん编码为ASCII序列じょれつ

[编辑]

國際こくさいいきめいへん使用しよう通用つうよう变长整数せいすうらい表示ひょうじ这些值。れい如,"kva "しょうようらい表示ひょうじ码号745。

しょうはしじょてき数字すうじけい统允许不需要じゅよう单独てきぶんへだたてき变长编码:てい于阈值的数字すうじ标志它是さい重要じゅうようてき数字すうじそく数字すうじてき结束。为了ひさげだか效率こうりつ,阈值取决于数字すうじてき位置いち以前いぜんてき插入そうにゅうどう时,数字すうじてき权重也会变化。

ざい使用しよう36个符ごうてき数字すうじけい统中,区分くぶん大小だいしょううつしてき'a'-'z'表示ひょうじじゅう进制数字すうじ0-25,'0'いた'9'表示ひょうじじゅう进制数字すうじ26-35。よし此,"kva",表示ひょうじじゅう进制数字すうじ序列じょれつ"10 21 0"。

了解りょうかい码这くし符号ふごう需要じゅよう阈值序列じょれつほんれいちゅう,阈值序列じょれつ为(1,1,26,26,...)。[3]さい重要じゅうようてき数字すうじ(least-significant digit)てき权重(ある位置いち值)总是1,具有ぐゆう权重1てき'k'とう于10(1×10=10)。した一个数字的权重取决于第一个阈值:一般いっぱんらい说,对于任意にんいnだいn+1个数字すうじてき权重だいn数字すうじてき权重じょう以(36-だいn个数字すうじてき阈值)。所以ゆえんだい二个符号的权重是36减去まえいち个阈值,そく为35(36-1=35)。よし此,ぜん两个符号ふごう'k''v'これ为10×1+21×35。よし于第二个符号不小于其阈值1,いん此还ゆうさら符号ふごうしか而,ゆかり于本れいちゅうだいさん个符ごう'a'(a=0),以忽りゃく其权じゅうてき计算。よし此,"kva "代表だいひょうじゅう进制数字すうじ(10×1)+(21×35)=745。阈值本身ほんみよし一个算法为每个编码字符序列决定,使つかい保持ほじざい126これ间(包括ほうかつ126)。[4]てき大小だいしょううつし以用らい提供ていきょう关于原始げんしくしてき大小だいしょううつししんいき[5]よし特殊とくしゅ按法编码さんてき码位はいじょざい插入そうにゅう"bücher"ちゅう特殊とくしゅ"ü"时,だい一种可能是编码为 "bcher-kvaa "てき "büücher",だい二种可能是编码为 "bcher-kvab "てき "bücüher",とうとうとうとうざい编码为 "bcher-kvae "てき "bücherü "きさき代表だいひょう插入そうにゅうýてき编码,そくüきさきてき統一とういつ碼字,从编码为 "bcher-kvaf "てき "ýbücher "开始(あずか编码为 "bcher-jvab "てき "übücher "不同ふどう),とうとう

为了使编码、かい码算ほう简单,编码时并ぼつゆう试图阻止そし一些编码不允许的統一碼值:しか而,かい码时应该检查这些值。

國際こくさいいきめいへん碼的设计使其成以在所有しょゆう脚本きゃくほんちゅう工作こうさく,并通过在操作そうさ过程ちゅう尝试适应くしちゅうてきしゅう范围进行自我じが优化。它针对字くしよし包含ほうがん0个或さらASCII其他脚本きゃくほんけい统的组成てきじょう况进ぎょうりょう优化,どう时也のう处理任意にんいてき統一とういつ碼字くしざい使用しようDNS时需要注意ようちゅういいき名字みょうじくし认为やめ使用しようnameprepえいnameprep进行りょう规范处理,并且顶级いきめいざい國際こくさいいきめいへん碼之ぜんかり设已经根すえかんかたちゅうさつてき语言ひょう进行りょう处理。どう时,DNS协议对输國際こくさいいきめいへん碼字くしてき接受せつじゅ长度也有やゆうしょげんせい

れい

[编辑]

下表かひょう展示てんじりょう不同ふどう类型输入てきこく际化いきめい编码てきれい[6]

输入 输入てきこく际化いきめい编码 对输いれてき描述
そら
a a- 仅有ASCIIいち个小写字しゃじはは
A A- 仅有ASCIIいち个大写字しゃじはは
3 3- 仅有ASCIIいち数字すうじ
- -- 仅有ASCIIいち个连
-- --- 仅有ASCII,两个连字
London London- 仅有ASCII于一个,ぼつゆう连字
Lloyd-Atkinson Lloyd-Atkinson- 仅有ASCIIいち个连
This has spaces This has spaces- 仅有ASCII包含ほうがんそらかく
-> $1.00 <- -> $1.00 <-- 仅有ASCII种符ごう混合こんごう
а 80a ぼつゆうASCIIいち西里にしざと尔字はは
ü tda ぼつゆうASCII,一个拉丁字母补充-1ちゅうてき
αあるふぁ mxa ぼつゆうASCII,一个希腊字母
れい fsq ぼつゆうASCIIいち个CJK
😉 n28h ぼつゆうASCIIいち个emoji
αあるふぁβべーたγがんま mxacd ぼつゆうASCII于一个字
München Mnchen-3ya 混合こんごう包含ほうがんいち个非ASCII
Mnchen-3ya Mnchen-3ya- Münchenてき两次こく际化いきめい编码
München-Ost Mnchen-Ost-9db 混合こんごうくし包括ほうかついち个非ASCIIいち个连
Bahnhof München-Ost Bahnhof Mnchen-Ost-u6b 混合こんごうくし包括ほうかついち个空かく,一个连字符和一个非ASCII
abæcdöef abcdef-qua4k 混合こんごうくし包括ほうかつ两个ASCII
правда 80aafi6cg にわか语字包括ほうかつASCII
ยจฆฟคฏข 22cdfh1b8fsa たい语字包括ほうかつASCII
도메인 hq1bm8jm9l 韩语包括ほうかつASCII
ドメインめいれい eckwd4c7cu47r2wf にち语字包括ほうかつASCII
MajiでKoiする5びょうまえ nowrap|MajiKoi5-783gue6qz075azm5e にち语字,以及ASCII
「bücher」 bcher-kva8445foa 混合こんごうてきASCIIひしげ丁字ていじはは补充-1及CJK

参考さんこう文献ぶんけん

[编辑]
  1. ^ くに际化いきめい 词汇ひょう. ICANN. [2019-01-22]. (原始げんし内容ないようそん档于2022-05-16). 
  2. ^ Internet Assigned Numbers Authority. Completion of IANA Selection of IDNA Prefix. www.atm.tut.fi. 2003-02-14 [2017-09-22]. (原始げんし内容ないようそん档于2010-04-27). 
  3. ^ This is true for the first encoded character (or, in terms of RFC 3492, the first "delta"): see RFC 3492, Sec. 6.
  4. ^ RFC 3492, Secs. 3.4, 5.
  5. ^ RFC 3492, App. A.
  6. ^ The Punycode in this table was created using the builtin codec "punycode" of the Python programming language version 3.8 (s.encode("punycode")). See talk page.