なぜRuby M17NにはUCS-2BEだけがあるのか

ということで、「UCS-2は文字セット」と書いたのは間違いだったけど、ことさらRubyのEncodingに取り入れる必要性があったのかということは引き続き疑問です。

これはruby-devの議論で出た、tkの返すエンコーディング名をRubyで認識して欲しい、というニーズに対応するためのものです。

US-2BEがあるのにUCS-2LEがないのも、tkではunicodeという名前でこれが提供されていたからです。なお、unicodeという名前がRuby M17Nで提供されていないのはこれが文字セット名だから・・・ではありません。歴史的には「UNICODE」がエンコーディング名として用いられていた時期があり、IANAにもISO-10646-UCS-2のaliasとしてcsUnicodeが登録されていたり、別にUNICODE-1-1というエンコーディングが定義されていたりもします。しかし、今の時代に使うのはどうかというのが一つ。また、件のcsUnicodeってIANA Charsetsの定義を見るとnetwork endian、つまりUCS-2BEなんですよ。実装と仕様が正反対のものはサポートできないというのがもう一つの理由です。