[#37248] [Feature:1.9] Enumerator#inspect — "Yusuke ENDOH" <mame@...>

遠藤です。

12 messages 2008/12/02

[#37337] [Feature #841] Object#self — "rubikitch ." <redmine@...>

Feature #841: Object#self

13 messages 2008/12/09

[#37513] Current status of 1.9.1 RC1's issues — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

14 messages 2008/12/20
[#37516] Re: Current status of 1.9.1 RC1's issues — Masatoshi SEKI <m_seki@...> 2008/12/20

咳といいます。

[#37576] [BUG:trunk] encoding for stdio's — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

11 messages 2008/12/24

[ruby-dev:37658] Re: [BUG:trunk] encoding for stdio's

From: "NARUSE, Yui" <naruse@...>
Date: 2008-12-29 15:17:31 UTC
List: ruby-dev #37658
成瀬です。

Yukihiro Matsumoto wrote:
> まつもと ゆきひろです
> 
> In message "Re: [ruby-dev:37653] Re: [BUG:trunk] encoding for stdio's"
>     on Mon, 29 Dec 2008 18:35:15 +0900, "Yugui (Yuki Sonoda)" <yugui@yugui.jp> writes:
> 
> |> |stdout, stderrのexternal encodingがnilなのはこういうものでしたっけ?
> |> |default_externalを期待してました。
> |
> |成瀬さんからは「stdout, stderrの出力が自動変換されないように」という意図
> |だった返事を頂きました。
> 
> default_internalが導入されるまでは「自動変換」はなかったわけ
> ですし、default_externalが設定されない理由にはならないのでは
> ないかと思います。
>
> |Rubyとしてどちらが良いものでしょうか。
> 
> default_internalを導入した以上、入出力については自動変換はや
> むなしではないかと思います。

default_internal は導入されましたが、自動変換はデフォルトはオフになっています。
このため、入力エンコーディングの自動変換はデフォルトだと働きません。
この状態で、出力だけ自動変換をするというのはおかしいように思います。

また、default_internal が nil でも出力自動変換を行うとした場合、
実際問題として自動変換をして欲しくない場合の指定が困難になるという問題もあります。

しかし、一方で、IO#external_encoding の挙動が奇妙なのも確かで、たとえば、
% ruby19 -e'open("fuga.txt","r+"){|f|p f.external_encoding}'
nil
% ruby19 -e'open("fuga.txt","r"){|f|p f.external_encoding}'
#<Encoding:UTF-8>
こんな問題もあり、external_encoding は設定される必要がありそうです。


つまるところ、
* 現在の自動変換周りの挙動は変えない
* でも external_encoding は出力でも常に設定する
が妥当ではないかと思います。

ここで、external_encoding が常に真になるようになるため、
自動変換の有無のフラグを、external_encoding から何を用いるようにするかが問題ですが、
internal_encoding の有無を見れば大丈夫かなぁと思っています。

-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread