[#45467] 文字列から配列への変換について — "西塔伸一郎" <omohideporoporo@...>
いつもお世話になっております。
7 messages
2008/09/04
[#45484] volatileの付け方 — 谷垣 宏一 <co01@...>
co01と申します。
14 messages
2008/09/11
[#45501] マルチパートフォームデータのescapeHTML — 宮崎 詠二 <eiji@...21.com>
最近rubyのcgiをはじめたばかりのeijiと申します。
7 messages
2008/09/16
[ruby-list:45465] Re: Ruby 1.9における異なるエンコーディングの文字列の結合
From:
Yukihiro Matsumoto <matz@...>
Date:
2008-09-01 00:06:57 UTC
List:
ruby-list #45465
まつもと ゆきひろです
In message "Re: [ruby-list:45464] Ruby 1.9における異なるエンコーディングの文字列の結合"
on Mon, 1 Sep 2008 08:32:45 +0900, rubikitch@ruby-lang.org writes:
|Ruby 1.9で異なるエンコーディングの文字列を結合するとエラーになりますが、
|将来的にレシーバのエンコーディングに変換して結合するようになりますか?
|あるいは、そのようなメソッドを新設する予定はありますか?
|もちろん相互変換可能という条件つきで。
|もしレシーバがUS-ASCIIならば引数のエンコーディングになるものとします。
どちらかがASCIIの範囲内の文字しか含まず、もう一方がASCII互換
のエンコーディングであった場合、結合は成功します。って、きっ
とそういう意味じゃないんですよね。
|予定がないとしたら、どういう問題があるのでしょうか?
「暗黙の変換は行わない」というのがRubyの基本的ポリシーだから
です。歴史的な事情その他から変換が本当に正しいかどうかは人間
にしかわからないので、結合のような基本的な操作で変換を暗黙に
行うのは危険だと考えます。
もちろん、「もっとユーザに優しく」とか「エンコーディングを意
識せずに」とかいう主張の「気持ち」は理解できるので、提案があ
れば耳を傾けるつもりはあります。
たとえば、今回話題になってるARGVのエンコーディングについてで
すが、現在は「ARGVに渡される文字列のエンコーディングはバイナ
リ」ではなくて、localeに従うようになっています。localeに設定
されたエンコーディングでファイル名を記述している限り、UNIX系
OSでは発生しない問題なのですね。
で、WindowsでもGetACP()を使ったコードページを指定しているよう
に見えるので、(現在では)実際はバイナリにならないんじゃないか
と思います。もしかしたら、この方が使ってらっしゃった1.9のバー
ジョンが古いのかもしれません。1.9.1に向けて日々進化中ですから。
ついでながら、これは「バイナリに適切なエンコーディングを付加
する」という話なので、「異なるエンコーディングを変換して処理」
では解決できない種類の問題ですね。バイナリは外からエンコーディ
ング情報を付加してやらないと変換できませんから。
guessは興味深いアプローチです。暗黙に行うと変換以上にダメージ
があるのですが、明示的に行うぶんには便利だと思います。が、あ
らゆるエンコーディングのguessを行うルーチンを組み込みにするの
は、まだ障害がありそうです。ライセンスのような非技術的なもの
も含めて。
まつもと ゆきひろ /:|)