先日、いろんなエンコードで動くようなコードを書いている時に気づいたことなのですが、
p 1.to_s.encoding # #<Encoding:US-ASCII>
なんと、このエンコーディングはUS-ASCIIとなっていました。
ソースを追いかけてみると、Fixnum
、Bignum
、Float
ともに、US-ASCII固定で値を返していました。実行環境を問わずこの仕様のようです。
影響する場面は少ないけれど
もっとも、シフトJIS、EUC、UTF-8、ISO-8859-1など、ASCIIの文字がそのまま表現できる文字コードの場合、これらのコードの文字列とUS-ASCIIの文字列と連結することも普通に出来ますし、上位互換の文字コードが指定された正規表現をASCII文字列に走らせることもできます。またRubyのソースコードはこれらのASCII互換の文字コードで書かないといけないので、実質影響する場面としては、
- UTF-16など、ASCII互換でない文字コードのデータを使っている場合
- メソッドで入力値の文字コードを厳密に判定する場合
など、そこまで多くないとは思います。