m17n が何か,って説明がなかった気がするなぁ

完全に忘れてました。

L10N (Localization) (地域化)

  • それぞれの地域・言語に適したようにすること
  • ある言語に対応すること
  • cf. nls (national language support)

I18N (Internationalization) (国際化)

  • 地域化しやすいように、あらかじめソフトウェア側を抽象化しておくこと
  • 言語を切り替えて使用できるようにすること

M17N (Multilingualization) (多言語化)

Ruby では後者の意味です。

ちなみに、「最初の1文字 + 間の文字数 + 最後の文字」という略し方は、DEC起源だそうな。

US-ASCIIは特別扱いに入りますか

入ります。具体的には以下の意味で特別扱いされます。

builtin
エンコーディングの定義が Ruby 本体のバイナリに入っている。もっとも、入ってなくても自動で読み込まれるので意識する必要はなかったりする。
ascii only
ASCII Compatible な文字列と比較・結合できます。
single byte optimization
文字のバイト長が 1 byte 固定なエンコーディングに対する最適化

1.9 はこの発表の内容を全部理解しないと使えないのでしょうか ?

String における encoding ってのは型みたいなものです。静的型だと思ってがちがちに固めることもできます。一方で、Duck Typing 的に扱ってもたいていの場合はうまく動くはずです。具体的にどうすればいいかは、ライブラリやアプリケーションの分類によると思うので、その辺はまた改めてまとめたいと思っています。
とりあえず大雑把にまとめるならば、

決め打ちしちゃう (UCS風)

  1. 好きなエンコーディングを一つ決める (例えば EUC-JP)
  2. magic comment にそのエンコーディングを書く 「# -*- coding: EUC-JP -*-」
  3. locale もそのエンコーディングにする 「LANG=ja_JP.eucJP」

こうすれば、ソースコードには EUC-JP の文字列書き放題。変な入力が来ても、文字化けする前に例外が上がるから安心。

決め打ちしない (CSI風)

スクリプト内を US-ASCII で固めることで、入出力は ASCII Compatible ならなんでもいいようにする。

両者の判断基準としては、ソースコードを US-ASCII のみで書けるのならば、決め打ちしないで頑張る方向に、書けないのならばさくっと決め打ちしてしまうのがよろしいかと思います。