LoginSignup
2
1

More than 5 years have passed since last update.

Numeric#to_sの返り値のエンコーディング

Last updated at Posted at 2015-05-22

先日、いろんなエンコードで動くようなコードを書いている時に気づいたことなのですが、

p 1.to_s.encoding # #<Encoding:US-ASCII>

なんと、このエンコーディングはUS-ASCIIとなっていました。

ソースを追いかけてみると、FixnumBignumFloatともに、US-ASCII固定で値を返していました。実行環境を問わずこの仕様のようです。

影響する場面は少ないけれど

もっとも、シフトJIS、EUC、UTF-8、ISO-8859-1など、ASCIIの文字がそのまま表現できる文字コードの場合、これらのコードの文字列とUS-ASCIIの文字列と連結することも普通に出来ますし、上位互換の文字コードが指定された正規表現をASCII文字列に走らせることもできます。またRubyのソースコードはこれらのASCII互換の文字コードで書かないといけないので、実質影響する場面としては、

  • UTF-16など、ASCII互換でない文字コードのデータを使っている場合
  • メソッドで入力値の文字コードを厳密に判定する場合

など、そこまで多くないとは思います。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1