[#31927] Re: Problem with Ruby 1.8.6-p110 on DragonFly (was [PATCH] Problem with ruby 1.8.6-p36 (and p39) on Tiger) — Takahiro Kambe <taca@...>
こんばんは。
[#31928] securerandom.rb for 1.8 — Tanaka Akira <akr@...>
securerandom.rb を 1.8 に追加し、cgi/session.rb に使わせたい
At Wed, 3 Oct 2007 12:49:20 +0900,
In article <86k5pwinco.knu@iDaemons.org>,
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
[#31936] Rake添付 — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
-----BEGIN PGP SIGNED MESSAGE-----
NAKAMURA, Hiroshi さんは書きました:
At Wed, 10 Oct 2007 16:46:01 +0900,
-----BEGIN PGP SIGNED MESSAGE-----
[#31941] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...>
前田です。
-----BEGIN PGP SIGNED MESSAGE-----
前田です。
-----BEGIN PGP SIGNED MESSAGE-----
前田です。
In message <47063403.3070402@ruby-lang.org>,
In message <20071006.101915.596518898.gotoyuzo@sawara.priv.tokyo.netlab.jp>,
前田です。
In message <4709852A.1020606@ruby-lang.org>,
-----BEGIN PGP SIGNED MESSAGE-----
In message <470D9227.9090008@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
[#31959] pcc: constant too big for cross-compiler — "NARUSE, Yui" <naruse@...>
成瀬です。
In article <470884D1.9040401@airemix.com>,
[#31980] multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
成瀬です。
こんにちは、なかむら(う)です。
In article <20071010091006.1988.USA@garbagecollect.jp>,
成瀬です。
In article <471003CB.7060701@airemix.com>,
成瀬です。
[#32049] Re: iconv enhancement in Ruby 1.9 — Nobuyoshi Nakada <nobu@...>
なかだです。
[#32133] undefined method `now' for DateTime:Class (NoMethodError) — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
どういう状況かよくわかってないのですが、いっそ必ず date 丸ごと読むようにするか、
-----BEGIN PGP SIGNED MESSAGE-----
> もしかして、単にtime.rbの「require 'parsedate'」を削ればいいだけだったり
-----BEGIN PGP SIGNED MESSAGE-----
> 確かに。で、1.9でparsedate.rbがなくなることを考えると、とりあえずtime.rb
In article <4b1598ce0710231835p1a0b3040kcc89bf0017a60c21@mail.gmail.com>,
[ruby-dev:31999] Re: multibyte string/regex literal with escape sequence
永井@知能.九工大です.
From: Yukihiro Matsumoto <matz@ruby-lang.org>
Subject: [ruby-dev:31994] Re: multibyte string/regex literal with escape sequence
Date: Tue, 9 Oct 2007 22:57:16 +0900
Message-ID: <E1IfFa6-00015M-FF@x31>
> 「実際に処理してみて例外が起きるかどうか」以外の方法は現時点
> では提供していません。そういう意味だと「安心して混在できる
> US-ASCII」と「やってみないとわからないBINARY」は区別した方が
> 嬉しいケースがあるかもしれませんね。
私は 1.9 での文字列の encoding 情報の扱いの
具体的なところを理解できてはないですし,
encoding 変換についても厳密には分かっていないのですが,
Ruby/Tk でのケースについて少々.
Tk では,マルチバイト文字列を扱う場合には utf-8 で渡す必要がありますし,
逆に渡される場合も utf-8 で返されます.
ですが,毎度の変換を必要とするのはユーザにとって不便です.
そのため,$KCODE の値やシステムのデフォルトの encoding の値に基づいて
自動的に (悪く言えば勝手に) 相互の変換をかけるようにしています.
なお変換に際しては,Tk が期待している変換が行われるように,
Tcl/Tk 上の encoding 変換関数を使うようにしています.
各種 encoding を混在させて扱う場合には
文字列の encoding を明示する必要がありますが,
その場合は @encoding というインスタンス変数を持つかどうかで
判定する (値がその文字列の encoding 名とする) ようにしています.
通常はこれでうまく機能するのですが,
イメージデータなどのバイナリデータを扱う場合が問題です.
'ascii' にしておけば問題がないかと思いきや
-----------------------------------------------------------
irb(main):003:0> $KCODE
=> "NONE"
irb(main):004:0> Tk.encoding
=> "euc-jp"
irb(main):005:0> '漢字asdf'
=> "\264\301\273\372asdf"
irb(main):006:0> TkComm._toUTF8('漢字asdf')
=> "\346\274\242\345\255\227asdf"
irb(main):007:0> TkComm._toUTF8('漢字asdf','euc-jp')
=> "\346\274\242\345\255\227asdf"
irb(main):008:0> TkComm._toUTF8('漢字asdf','ascii')
=> "\302\264\303\201\302\273\303\272asdf"
-----------------------------------------------------------
というように,変換されてしまいます.
# この例は Linux 上なので,デフォルトでの Tk.encoding は
# 'euc-jp' になってますが,日本語 WinXP 上では 'cp932' となります.
相互変換で見てみるとこんな感じになってしまいます.
-----------------------------------------------------------
irb(main):004:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf'))
=> "\264\301\273\372asdf"
irb(main):005:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'euc-jp'), 'euc-jp')
=> "\264\301\273\372asdf"
irb(main):006:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'euc-jp'), 'ascii')
=> "??asdf"
irb(main):007:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'ascii'), 'ascii')
=> "????asdf"
irb(main):008:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'ascii'), 'euc-jp')
=> "\241\255???asdf"
-----------------------------------------------------------
そこで,Tk.encoding_names には含まれない 'binary' が指定された場合は
変換を行わないようにすることで,
-----------------------------------------------------------
irb(main):002:0> TkComm._toUTF8('漢字asdf','binary')
ArgumentError: unknown encoding name 'binary'
from /usr/local/lib/ruby/1.8/tk.rb:638:in `_toUTF8'
from /usr/local/lib/ruby/1.8/tk.rb:638:in `_toUTF8'
from (irb):2
irb(main):003:0> TkComm._toUTF8(Tk::EncodedString.new('漢字asdf','binary'))
=> "\264\301\273\372asdf"
irb(main):004:0> TkComm._toUTF8(Tk::BinaryString.new('漢字asdf'))
=> "\264\301\273\372asdf"
irb(main):005:0> s = Tk::BinaryString.new('漢字asdf')
=> "\264\301\273\372asdf"
irb(main):006:0> s.encoding
=> "binary"
irb(main):007:0> TkComm._toUTF8(s)
=> "\264\301\273\372asdf"
-----------------------------------------------------------
というように,問題が出ないようにしています.
1.9 で文字列が encoding 情報を持つならば,
Ruby/Tk でもそれを用いることになるはずです.
encoding を明示しないケースで encoding がどのように扱われるのか
分かっていないのですが,とくに指定がない場合には US-ASCII となるならば,
Ruby/Tk では Tk のシステムデフォルト値を用いて
従来と同様に自動変換を行うようにすると思います.
# 現実に,今現在はそれでユーザの利便性を確保できていると思うので.
その際,US-ASCII と BINARY との区別ができないのであれば,
せっかく m17n 化されるにもかかわらず
Ruby/Tk で特別な対応を行わざるを得なくなり,
面倒なことになりそうに思います.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp