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

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-09-28 19:30:12 UTC
List: ruby-dev #31899
なかだです。

At Fri, 28 Sep 2007 22:13:54 +0900,
NARUSE, Yui wrote in [ruby-dev:31897]:
> Martin Duerst wrote:
> > 個人的には三種類のものがあるかと思います。
> > 1) 解釈してないものを解釈する。これは場いつ列に文字コードを教える、
> >    (上記の条件で) Shift_JIS から CP932 とかが考えられている。
> >    これは 「interpret_as」とか 「as」みたいな名前がいいのではない
> >    かと思います。多分ここは逆のケースも入るのではないかと思います。
> >    (String#interpret_as('UNKNOWN-8BIT') とか; "UNKNOWN-8BIT" については
> >     http://www.iana.org/assignments/character-sets 参照)

現在"US-ASCII"と"UNKNOWN-8BIT"はとくに区別していませんが、
"UNKNOWN"や"BINARY"、あるいは1.8のKCODEのような"NONE"を分けて、
"UNKNOWN"<->その他のencodingだけを許してそれ以外はエラーにする、
というように1)を二つに分けるということも考えられると思います。

  binay_string.encode(encoding_name) #=> encoded_string
  encoded_string.decode              #=> binay_string

> > 2) 文字コードを無理矢理変えること。これは普通は余り使わない方がいいので、
> >    長い名前がいいのではないかと思います。例えば「force_encoding」とか
> >    のようなもの。
> >  ここまでの問題は、相当の情報がないとなかなか 1) と 2) をよく区別できない。

上記の方法であれば、これは str.decode.encode(new_encoding) と書
くことになり、区別させることはできるのではないでしょうか。

> > 3) 文字コード情報をベースにコード変換を行う。これは多分
> >    String#convert と String#convert! ぐらいでいいだろうと思います。
> 
> 他の言語ならばそのように3つのメソッドに分けると思うのですが、
> Ruby は似た機能は一つのメソッド/クラスにまとめるという傾向があるので、
> String#encode に現在まとめてあるのだと思っています。
> 
> けれども、変換していないのに変換を意味する語を用いているのはアレなので
> 1) 2) を別にしようという話なのですよね。

3)から別にする、という意味ですよね。変換についてはまた別途追加す
ることにしましょう。

名前については、ひとまずMartinさんのforce_encodingを使わせてもら
いました。

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

In This Thread

Prev Next