[ruby-dev:31894] Re: [m17n] String#encode

From: Martin Duerst <duerst@...>
Date: 2007-09-28 10:32:17 UTC
List: ruby-dev #31894
At 18:12 07/09/28, NARUSE, Yui wrote:
>成瀬です。
>
>Yukihiro Matsumoto wrote:
>> encodeという名前は変換をイメージさせるのでよくないなあと思う
>> ようになりました。しかし、ま、名前は後で変えることにしてコミッ
>> トしてくださいませんか?
>
>変換なしに文字コード名を差し替えるだけの場合は String#encoding= で、
>変換を伴う場合は String#encode というのはどうなのでしょう。

言語学的には筋が通るところがありますが、一般のユーザーには混乱が
予想される。

>Shift_JIS を
>CP932 に差し替えるとか、

その二つの違いは具体的に何でしょうか。ただ後者で MS 特有の
外字が追加されたらバイト列→文字コード着きバイト列と同等なのは
すごく納得します。

しかし、iconv (一部?) みたいに、Shift_JIS の 0x5c を円記号、
CP932 の場合にはバックスラッシュ、という場合にはちょっと
違うのではないかと思います。

>バイト列に文字コードを教える場合に便利そうだなぁと。
>
># 個人的には encode よりも convert の方がしっくりくるのですが

全く同意です。

個人的には三種類のものがあるかと思います。
1) 解釈してないものを解釈する。これは場いつ列に文字コードを教える、
   (上記の条件で) Shift_JIS から CP932 とかが考えられている。
   これは 「interpret_as」とか 「as」みたいな名前がいいのではない
   かと思います。多分ここは逆のケースも入るのではないかと思います。
   (String#interpret_as('UNKNOWN-8BIT') とか; "UNKNOWN-8BIT" については
    http://www.iana.org/assignments/character-sets 参照)
2) 文字コードを無理矢理変えること。これは普通は余り使わない方がいいので、
   長い名前がいいのではないかと思います。例えば「force_encoding」とか
   のようなもの。
 ここまでの問題は、相当の情報がないとなかなか 1) と 2) をよく区別できない。

3) 文字コード情報をベースにコード変換を行う。これは多分
   String#convert と String#convert! ぐらいでいいだろうと思います。

宜しくお願いします。    Martin.



#-#-#  Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-#  http://www.sw.it.aoyama.ac.jp       mailto:duerst@it.aoyama.ac.jp     


In This Thread