From: "NARUSE, Yui" Date: 2008-08-05T09:08:11+09:00 Subject: [ruby-dev:35766] Re: 文字コードがシンボルでないのは何故? 成瀬です。 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