成瀬です。

take_tk wrote:
> たけ(tk)です。
> 
> 素朴な疑問なのですが、文字コードの指定の方法がシンボルでないのは何故なん
> でしょうか?
> 
> :euc_jp とか :utf_8 とか :shift_jis などのような、小文字+アンダースコア
> 型のシンボルのほうがIDらしくて良いような気がするのですが・・。
> 
> http://doc.loveruby.net/refm/api/view/class/String
> 
> #e = "言語".encode("EUC-JP") # これでもよいが
> #u = "言語".encode("UTF-8")
> e = "言語".encode(:euc_jp)  # これでもよい。
> u = "言語".encode(:utf_8)
> p e.encoding                   #=> Encoding::EUC_JP
> p u.encoding                   #=> Encoding::UTF_8

まぁ、引数として受けるのはありかもしれません。

> * できるのかな? 使っていなくてすみません。Windows版のバイナリってど
> こかにありますか?
> 
> ソースを見た感じでは、こんな風になっているとどうでしょう?
> 
> http://svn.ruby-lang.org/repos/ruby/trunk/encoding.c
> 
>  *   Encoding.aliases
>  *   => {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1986"=>"US-ASCII",
>  *       "SJIS"=>"Shift_JIS", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
>         
>  *   Encoding.aliases
>  *   => {"BINARY"=>:ascii_8bit, "ASCII"=>:us_ascii, "ANSI_X3.4-1986"=>us_ascii,
>  *       "SJIS"=>:shift_jis, "eucJP"=>:euc_jp, "CP932"=>:windows_31j}

シンボルは GC されないので、それをやってしまうと、
エンコーディングの数 * 数バイトがずっと確保されたままになるのです。

-- 
NARUSE, Yui  <naruse / airemix.jp>