👏

[Feature #21617] URI のドメイン名に IDN をサポートするチケット

に公開

[Feature #21617] Add Internationalized Domain Name (IDN) support to URI

  • URI でドメイン名に IDN をサポートする旨のチケット
  • IDN とは 国際化ドメイン名 (Internationalized Domain Name) の略でドメイン名に 日本語アラビア文字 などが使用できるドメイン名のこと
  • 現状だと以下のようなドメイン名の場合はエラーになってしまう
require "uri"

URI("https://日本語.jp/")
# => error: URI must be ascii only "https://\u65E5\u672C\u8A9E.jp/" (URI::InvalidURIError)
  • こういう URI を使用する場合はサードパーティ制の外部 gem(以下は addressable が例)を使用する必要がある
Addressable::URI.parse("https://日本語.jp/")
# => #<Addressable::URI:0xd648 URI:https://日本語.jp/>
  • この機能をサポートすること自体は概ね同意が取れてるみたいなんですが実装を何に依存するのかでまだ議論が続いているみたいですね
    • libidn2 のような外部ライブラリに依存するのかそれとも pure Ruby で実装するのか
GitHubで編集を提案

Discussion