[#42564] [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Makoto Kishimoto <redmine@...>

Feature #4043: グローバル関数current_classの提案

15 messages 2010/11/11
[#42774] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/16

まつもと ゆきひろです

[#42834] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42835] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42838] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42845] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42577] Rubyのバグレポートのガイドライン — "Shota Fukumori (sora_h)" <sorah@...>

sora_hです。

11 messages 2010/11/15
[#42588] Re: Rubyのバグレポートのガイドライン — Yugui <yugui@...> 2010/11/18

2010/11/15 Shota Fukumori (sora_h) <sorah@tubusu.net>:

[#42638] Enumerable#categorize — Tanaka Akira <akr@...>

enumerable から hash を生成するメソッドとして

25 messages 2010/11/27
[#42643] Re: Enumerable#categorize — Yukihiro Matsumoto <matz@...> 2010/11/27

まつもと ゆきひろです

[ruby-dev:42608] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv

From: "NARUSE, Yui" <naruse@...>
Date: 2010-11-20 06:58:16 UTC
List: ruby-dev #42608
成瀬です。

(2010/11/20 11:36), Kouhei Sutou wrote:
> In<4CE53B7E.7050305@airemix.jp>
>    "[ruby-dev:42593] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports
>     many errors and failures without iconv" on Thu, 18 Nov 2010 23:43:14 +0900,
>    "NARUSE, Yui"<naruse@airemix.jp>  wrote:
> 
>> 比較対象は全て UTF-8 なので、REXML::Encoding モジュールに
>> decode 済み or UTF-8 か否か、を示すインスタンス変数を追加というのは考えました。
> 
> 内部ではそれでもよいと思いますが、利用者がXML宣言のエンコー
> ディングを使いたいときに不便だと思っています。例えば、日本語っ
> ぽいものだけ扱い時にエンコーディングがShift_JISかEUC-JPか
> UTF-8以外のものは使わないとか、というケースを考えていました。
> このとき、利用者がいちいちREXMLから返されるエンコーディング
> を正規化して比較しなければいけないのは面倒だと考えています。

そういう要求が出てくることまでは想像できますが、「日本語っぽいものだけ扱い時」
には、現状 UTF-8, Shift_JIS, Windows-31J, EUC-JP, CP51932, eucJP-ms を
見ないといけないんですよね。

現実的にはエンコーディングで判定するよりも、そのニーズの場合、
XML 全体が CP932 に変換できるかで判定した方がベターだと思います。

また、生の文字列から encoding object にするのは Encoding.find(str)
だけでいけますが、Encoding オブジェクトになってしまうともう戻せない、
というのと、後述の理由で IANA の canonical name 以外を指定したい場合も
あったりして。

> あ、そういうことではなく、エンコーディングまわりのことは別ト
> ピックとして扱ってくれた方が対応しやすかったということです。

確かに仰るとおりです、以後そうします。

>> XML 宣言で用いるエンコーディングと、変換で用いるエンコーディングを別に
>> したいケースがあるのですよ。
>> 代表例が Windows-31J と Shift_JIS、CP51932 と EUC-JP です。
> 
> 私は、Windows-31JとShift_JISが違うとかはわかるのですが、↑の
> ことをしたいケースがどういう場合かがわかっていません。
> 
> また、XML宣言で用いるエンコーディングと変換で用いるエンコーディ
> ングは同じものにするべきだと思っています。そうしないと、
> REXMLが出力したXMLをパースする他のXMLパーサが困ると思っていま
> す。XML宣言のエンコーディングがShift_JISなのにXMLの中に
> Shift_JISにはない文字が入ってしまうかもしれないということです
> よね?

「他のXMLパーサ」のためにまさにこれが必要なのです。

Windows の API、kernel32 の MultiByteToWideChar や、Mlang.dll の
ConvertINetString、.NET Framework の Encoding は"Shift_JIS" を
与えると Windows-31J として、"EUC-JP" を与えると CP51932 として解釈します。

なので、これらの API を使う XML パーサを送信する時は、Ruby 側では
XML 宣言で用いるエンコーディングと、変換で用いるエンコーディングを
変える必要があります。

この辺と先の XML 宣言で用いるエンコーディング名を複合的に踏んじゃったのが、
例えばJava などから Windows 向けの XML をどうやって書き出すか、というお話です。
http://www.artonx.org/diary/20050614.html
http://d.hatena.ne.jp/Kazzz/20050614/p1

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

In This Thread