永井@知能.九工大です.

From: Yukihiro Matsumoto <matz / ruby-lang.org>
Subject: [ruby-dev:32586] Re: Binary String
Date: Fri, 14 Dec 2007 01:07:24 +0900
Message-ID: <E1J2qai-0002CA-28 / localhost>
> まず、いままでRubyにはbinaryというものはなくてそれなりに動い
> てきたわけです。ということは、実はbinaryは不要ではないかとい
> うのが私の考えです。

[ruby-dev:31999] で書かせていただいた通り,
Ruby/Tk では binary であることをマークしておくことが必要でした.
1.8 までは String が encoding の情報を持っていなかったために
Ruby/Tk 独自に encoding 情報を持たせてましたが,
その際に binary であることの明示できていなければ
処理がきちんと行えない or 実装およびユーザの手間が増大するためです.

# [ruby-dev:32000] は encoding 名を 'binary' という名前ではなく 
# 'identity' という名前にしておけば
# わざわざ条件分けする必要がなかったという話であり,
# binary 明示の encoding が必要ということに変わりはありません.

Ruby の中だけですべて閉じているならば
binary の明示がなくても何とかなるのかもしれませんが,
外部ライブラリとの連携時に Ruby/Tk のケースと類似したことが
発生する可能性は十分にあると思います.

もちろん,従来と同様に独自に印をつけることは可能ですが,
Encoding の体系の中に組み入れた方が無理なく扱うことができます.

> しかも、binaryを導入してもほんとうに正しくbinaryが適用できる
> 局面がどれだけあるかと考えると、機械が自動的に判断することは
> 不可能だと思います。ので、現状のASCII-8BITと同格にbinaryなる
> ものを導入することには賛成しません。

はい.
もちろん自動的な判断をさせることは考えていませんし,
それは不可能だと思います.
スクリプト上で明確に指定した場合に設定されるべきものです.
ですので,

> しかし、人間が自覚の上で「これは変換されない」と指定すること
> には問題はないと思いますので、binaryというencoding(その実体は
> ascii-8bitのレプリカ)を用意して、明示的にforce_encodingする
> (あるいは外部エンコーディングとして指定する)というスタイルな
> ら反対はしません。

というように明示することしか考えていませんでした.

# default_external に設定できないようにするのがよいと思いますが,
# I/O の encoding としては指定できるようにするのは便利かも.
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai / ai.kyutech.ac.jp