違いは何ですか国際化されたドメイン名そして国際化されたドメイン名2? (どちらもほぼ同じことをする理由。出力が異なる理由。どちらを使用するのか)
入力ファイル:
Amazon.com
ama--zon.com
a--mazon.com
--amazon.com
amazon--.com
amazon-.com
cat infile | idn
Amazon.com
ama--zon.com
a--mazon.com
--amazon.com
amazon--.com
amazon-.com
cat infile | idn2
amazon.com
ama--zon.com
a--mazon.com
idn2: toAscii: string start/ends with forbidden hyphen
(最後の3項目)
THK
修正する:これが私が探している答えです。ありがとうございます。投票が差し迫った。
GNU IDNライブラリ - Libidn GNU libidn2 は GNU libidn の後継バージョンです。 IDNA 2008 および TR46 の実装が付属し、GNU libidn の互換性レイヤも提供します。
ベストアンサー1
あなたが言う「IDN」はIDNA2003で、「IDN2」はIDNA2008(2010年指定)です。
2つの間に違いがあり、「複雑」です。ユースケースや制限について詳しく説明していないので、他のリソースが多いので、深く入る必要はありません。しかし、主な違いの1つは、いくつかの文字と対応するマッピング、大文字の処理です。
さらに、IDNの目的は、US-ASCII以外の文字を使用してDNSで名前を処理することであるため、選択した名前はIDNとは無関係です。ドイツ語eszettのように:ß
したがって、以下を目撃してください。
$ idn straße.de
strasse.de
$ idn2 straße.de
xn--strae-oqa.de
はい、この機能は2つの標準間の重要な違いの1つです。
さらに重要なのは「どれを選ぶのか」です。これはあなたの選択ではなく、ドメインが存在するレジストリによって異なります。現在(2023年)、すべての登録機関はIDNA2008を使用する必要があります(ただし、どの登録機関もまだIDNA2003を使用していないことを証明することはできません)。ただし、2010年以前にIDNを許可し始めると、将来の互換性も維持する必要があるため、ドメイン名は次のようになります。 IDNA2003に準拠し、IDNA2008に準拠して無効な登録であるため、削除された場合、誰もこのレジストリに再登録できません。その後、IDNにまったく従わない他のレジストリがあるので、絵文字などのあらゆる種類の異なるエントリを受け入れます。
上記の特定の例では、amazon-.com
DNSルールに応じて(したがってIDN自体とは別に)、どのラベルもハイフンで開始または終了できません。したがって、その名前は決して有効ではありません。