なかだです。

At Tue, 5 Aug 2008 04:22:22 +0900,
take_tk wrote in [ruby-dev:35763]:
> 素朴な疑問なのですが、文字コードの指定の方法がシンボルでないのは何故なん
> でしょうか?

シンボルリテラルには(クォートしない限り)使えない文字が、エンコー
ディング名にはしばしば使われているからです。

> :euc_jp とか :utf_8 とか :shift_jis などのような、小文字+アンダースコア
> 型のシンボルのほうがIDらしくて良いような気がするのですが・・。

その例でいうと、:shift_jis以外は有効なエンコーディング名ではあり
ません。

> p e.encoding                   #=> Encoding::EUC_JP
> p u.encoding                   #=> Encoding::UTF_8

Encodingの定数はrubyの定数名規則にしたがって変換してありますが、
エンコーディング名全般にアンダースコアを使う別名をつけるのはやり
すぎのような気がします。

>  *   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}

意図がよくわかりませんが、なぜ片方だけ文字列のままなんでしょうか。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦