[#32498] Re: [ruby-cvs:21399] Ruby:r14162 (trunk): * parse.y (expr): redefinable not (!) operator. — SASADA Koichi <ko1@...>

 ささだです.

9 messages 2007/12/09

[#32512] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Nobuyoshi Nakada <nobu@...>

なかだです。

33 messages 2007/12/10
[#32520] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Martin Duerst <duerst@...> 2007/12/10

中田さん、こんにちは。

[#32527] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Nobuyoshi Nakada <nobu@...> 2007/12/10

なかだです。

[#32535] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Yukihiro Matsumoto <matz@...> 2007/12/11

まつもと ゆきひろです

[#32537] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Martin Duerst <duerst@...> 2007/12/11

At 15:33 07/12/11, Yukihiro Matsumoto wrote:

[#32538] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Yukihiro Matsumoto <matz@...> 2007/12/11

まつもと ゆきひろです

[#32539] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Nobuyoshi Nakada <nobu@...> 2007/12/11

なかだです。

[#32550] Binary String — Hidetoshi NAGAI <nagai@...>

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

204 messages 2007/12/12
[#32551] Re: Binary String — Yukihiro Matsumoto <matz@...> 2007/12/12

まつもと ゆきひろです

[#32552] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2007/12/12

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

[#32553] Re: Binary String — Yukihiro Matsumoto <matz@...> 2007/12/12

まつもと ゆきひろです

[#32560] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2007/12/12

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

[#32561] Re: Binary String — Nobuyoshi Nakada <nobu@...> 2007/12/12

なかだです。

[#33018] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/11

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

[#33019] Re: Binary String — Tanaka Akira <akr@...> 2008/01/11

In article <20080111.171950.78716471.nagai@ai.kyutech.ac.jp>,

[#33024] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/11

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

[#33027] Re: Binary String — Tanaka Akira <akr@...> 2008/01/11

In article <20080111.184442.74744388.nagai@ai.kyutech.ac.jp>,

[#33041] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/11

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

[#33047] Re: Binary String — Tanaka Akira <akr@...> 2008/01/11

In article <20080112.004750.74741782.nagai@ai.kyutech.ac.jp>,

[#33055] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/12

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

[#33080] Re: Binary String — Tanaka Akira <akr@...> 2008/01/13

In article <20080112.100830.112615025.nagai@ai.kyutech.ac.jp>,

[#33104] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/14

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

[#33108] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/15

成瀬です。

[#33121] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/15

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

[#33123] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/15

成瀬です。

[#33127] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/16

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

[#33138] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/16

成瀬です。

[#33147] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/17

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

[#33152] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/17

成瀬です。

[#33153] Re: Binary String — 遊楽庵 <yu_raku_an@...> 2008/01/17

遊楽庵です。

[#33154] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/17

成瀬です。

[#33157] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/17

まつもと ゆきひろです

[#33330] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/23

成瀬です。

[#33336] Re: Binary String — Tanaka Akira <akr@...> 2008/01/23

In article <47975933.8010907@airemix.com>,

[#33337] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/23

まつもと ゆきひろです

[#33346] Re: Binary String — "U.Nakamura" <usa@...> 2008/01/24

こんにちは、なかむら(う)です。

[#33348] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/24

まつもと ゆきひろです

[#33352] Re: Binary String — "U.Nakamura" <usa@...> 2008/01/24

こんにちは、なかむら(う)です。

[#33353] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/24

まつもと ゆきひろです

[#33122] Re: Binary String — Tanaka Akira <akr@...> 2008/01/15

In article <20080115.024201.41653719.nagai@ai.kyutech.ac.jp>,

[#33126] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/16

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

[#33151] Re: Binary String — Tanaka Akira <akr@...> 2008/01/17

In article <20080116.102057.41656941.nagai@ai.kyutech.ac.jp>,

[#33160] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/17

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

[#33165] Re: Binary String — Tanaka Akira <akr@...> 2008/01/18

In article <20080117.233832.74721189.nagai@ai.kyutech.ac.jp>,

[#33188] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/19

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

[#33193] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/19

まつもと ゆきひろです

[#33202] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/19

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

[#33230] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/20

まつもと ゆきひろです

[#33236] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/21

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

[#33238] Re: Binary String — SASADA Koichi <ko1@...> 2008/01/21

 m17n には近づかないようにしているささだです。

[#33241] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/21

成瀬です。

[#33248] Re: Binary String — Yukihiro Matsumoto <matz@...> 2008/01/21

まつもと ゆきひろです

[#33281] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/22

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

[#33285] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/22

成瀬です。

[#33318] Re: Binary String — Hidetoshi NAGAI <nagai@...> 2008/01/23

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

[#33186] Ruby1.9 String バイト列へのインデックス アクセス — "Hisanori Kiryu" <hkiryu@...> 2008/01/19

長文失礼します。

[#33192] Re: Ruby1.9 String バイト列へのインデックス アクセス — Yukihiro Matsumoto <matz@...> 2008/01/19

まつもと ゆきひろです

[#33195] Re: Ruby1.9 String バイト列へのインデックス アクセス — rubikitch@... 2008/01/19

From: Yukihiro Matsumoto <matz@ruby-lang.org>

[#33199] Re: Ruby1.9 String バイト列へのインデックス アクセス — "NARUSE, Yui" <naruse@...> 2008/01/19

成瀬です。

[#33020] Re: Binary String — "NARUSE, Yui" <naruse@...> 2008/01/11

成瀬です。

[#32610] 1.9.1 issues left (as of 12/15) — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

14 messages 2007/12/15

[#32715] issues left as of 12/25 2:00am JST — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

41 messages 2007/12/24
[#32738] issues left as of 12/25 noon JST — Yukihiro Matsumoto <matz@...> 2007/12/25

まつもと ゆきひろです

[#32739] Re: issues left as of 12/25 noon JST — Yukihiro Matsumoto <matz@...> 2007/12/25

まつもと ゆきひろです

[#32791] Re: [ruby-list:44387] [ANN] Ruby 1.9.0 is released — SASADA Koichi <ko1@...>

 ささだです。

21 messages 2007/12/25

[#32823] class TimeSpan — "NARUSE, Yui" <naruse@...>

成瀬です。

18 messages 2007/12/27

[#32843] Windowでのデフォルトエンコーディング — KIMURA Koichi <kimura.koichi@...>

木村です。

30 messages 2007/12/28
[#32845] Re: Windowでのデフォルトエンコーディング — "U.Nakamura" <usa@...> 2007/12/28

こんにちは、なかむら(う)です。

[#32851] Re: Window でのデフォルトエンコーディング — Martin Duerst <duerst@...> 2007/12/28

At 13:55 07/12/28, U.Nakamura wrote:

[#32853] Re: Windowでのデフォルトエンコーディング — "NARUSE, Yui" <naruse@...> 2007/12/28

U.Nakamura wrote:

[#32857] Re: Windowでのデフォルトエンコーディング — "U.Nakamura" <usa@...> 2007/12/28

こんにちは、なかむら(う)です。

[#32852] Resolv::DNS#getaddresses doesn't return IPv6 address — "NARUSE, Yui" <naruse@...>

成瀬です。

17 messages 2007/12/28
[#32923] Re: Resolv::DNS#getaddresses doesn't return IPv6 address — Takahiro Kambe <taca@...> 2008/01/05

こんにちは。

[#32924] Re: Resolv::DNS#getaddresses doesn't return IPv6 address — "NARUSE, Yui" <naruse@...> 2008/01/05

成瀬です。

[#32925] Re: Resolv::DNS#getaddresses doesn't return IPv6 address — Takahiro Kambe <taca@...> 2008/01/05

In message <477EF0C9.4060103@airemix.com>

[#32929] Re: Resolv::DNS#getaddresses doesn't return IPv6 address — "NARUSE, Yui" <naruse@...> 2008/01/05

成瀬です

[ruby-dev:32863] Re: Window でのデフォルトエンコーディング

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-12-28 09:21:31 UTC
List: ruby-dev #32863
なかだです。

At Fri, 28 Dec 2007 15:09:28 +0900,
NARUSE, Yui wrote in [ruby-dev:32855]:
> > 多分 alias でいいと思います。でもそれも日本に限ります。
> > 現在 encoding として iso-8859-X をサポートしていますが、
> > これは windows 上で使われている windows-125x と違います。
> > 単に alias にしてしまうと大文字小文字を始め期待外れの
> > 結果になる可能性が多いです。
> 
> 日本でも Shift_JIS と CP932 は別物なので alias じゃまずいですよ。
> 日本の混乱具合については英語ですと XML 日本語プロファイルがまとまってい
> ます。これを参考に変換テーブルを作っても役には立たないあたりがまた混乱し
> ているのですが・・・。

aliasではなくてreplicaにしてはどうかと思います。ただし、これはこ
れで比較などの問題があるので、base encodingをたどって比較可能な
encodingを探して、それのstrcmpメソッドに投げるというのを考えてみ
ました。


Index: include/ruby/encoding.h
===================================================================
--- include/ruby/encoding.h	(revision 14758)
+++ include/ruby/encoding.h	(working copy)
@@ -115,4 +115,6 @@ int rb_enc_casefold(char *to, const char
 int rb_enc_toupper(int c, rb_encoding *enc);
 int rb_enc_tolower(int c, rb_encoding *enc);
+VALUE rb_enc_base_encoding(VALUE encoding);
+rb_encoding *rb_enc_originally_compatible(rb_encoding *, rb_encoding *);
 ID rb_intern3(const char*, long, rb_encoding*);
 ID rb_interned_id_p(const char *, long, rb_encoding *);
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 14758)
+++ include/ruby/intern.h	(working copy)
@@ -523,5 +523,5 @@ VALUE rb_str_concat(VALUE, VALUE);
 int rb_memhash(const void *ptr, long len);
 int rb_str_hash(VALUE);
-int rb_str_comparable(VALUE, VALUE);
+VALUE rb_str_comparable(VALUE, VALUE);
 int rb_str_cmp(VALUE, VALUE);
 VALUE rb_str_equal(VALUE str1, VALUE str2);
Index: encoding.c
===================================================================
--- encoding.c	(revision 14758)
+++ encoding.c	(working copy)
@@ -551,5 +551,7 @@ rb_enc_compatible(VALUE str1, VALUE str2
 	    return enc;
     }
-    return 0;
+
+    return rb_enc_originally_compatible(rb_enc_from_index(idx1),
+				       rb_enc_from_index(idx2));
 }
 
@@ -729,10 +731,39 @@ enc_name(VALUE self)
 }
 
-static VALUE
-enc_base_encoding(VALUE self)
+/*
+ * call-seq:
+ *   enc.base_encoding => encoding
+ *
+ * Returns the base encoding of the encoding.
+ *
+ *   Encoding::CP932.base_encoding  => Encoding::Shift_JIS
+ */
+VALUE
+rb_enc_base_encoding(VALUE self)
 {
     return rb_attr_get(self, id_base_encoding);
 }
 
+static rb_encoding *
+original_encoding(rb_encoding *enc)
+{
+    VALUE e = rb_enc_from_encoding(enc), t;
+    while (!ENC_DUMMY_P(e) && !NIL_P(t = rb_enc_base_encoding(e))) {
+	e = t;
+    }
+    return rb_to_encoding(e);
+}
+
+rb_encoding *
+rb_enc_originally_compatible(rb_encoding *enc1, rb_encoding *enc2)
+{
+    rb_encoding *oenc1 = original_encoding(enc1);
+    rb_encoding *oenc2 = original_encoding(enc2);
+    if (oenc1 == oenc2) {
+	return (enc1 == oenc1) ? enc2 : enc1;
+    }
+    return 0;
+}
+
 /*
  * call-seq:
@@ -821,4 +852,21 @@ enc_compatible_p(VALUE klass, VALUE str1
 }
 
+/*
+ * call-seq:
+ *   Encoding.strcmp(str1, str2) => -1, 0 or +1
+ *
+ * Compares two strings in the encoding specific way.
+ */
+static VALUE
+enc_strcmp(VALUE klass, VALUE str1, VALUE str2)
+{
+    int result;
+
+    StringValue(str1);
+    StringValue(str2);
+    result = rb_str_cmp(str1, str2);
+    return INT2FIX(result);
+}
+
 /* :nodoc: */
 static VALUE
@@ -981,6 +1029,7 @@ Init_Encoding(void)
     rb_define_method(rb_cEncoding, "inspect", enc_inspect, 0);
     rb_define_method(rb_cEncoding, "name", enc_name, 0);
-    rb_define_method(rb_cEncoding, "base_encoding", enc_base_encoding, 0);
+    rb_define_method(rb_cEncoding, "base_encoding", rb_enc_base_encoding, 0);
     rb_define_method(rb_cEncoding, "dummy?", enc_dummy_p, 0);
+    rb_define_method(rb_cEncoding, "strcmp", enc_strcmp, 2);
     rb_define_singleton_method(rb_cEncoding, "list", enc_list, 0);
     rb_define_singleton_method(rb_cEncoding, "find", enc_find, 1);
@@ -993,4 +1042,6 @@ Init_Encoding(void)
     rb_define_singleton_method(rb_cEncoding, "locale_charmap", rb_locale_charmap, 0);
 
+    rb_enc_replicate("CP932", rb_enc_from_index(ENCINDEX_SJIS));
+
     /* dummy for unsupported, statefull encoding */
     rb_define_dummy_encoding("ISO-2022-JP");
Index: string.c
===================================================================
--- string.c	(revision 14758)
+++ string.c	(working copy)
@@ -418,5 +418,5 @@ rb_str_shared_replace(VALUE str, VALUE s
 }
 
-static ID id_to_s;
+static ID id_to_s, id_strcmp;
 
 VALUE
@@ -1262,5 +1262,5 @@ rb_str_hash_m(VALUE str)
 #define lesser(a,b) (((a)>(b))?(b):(a))
 
-int
+VALUE
 rb_str_comparable(VALUE str1, VALUE str2)
 {
@@ -1268,4 +1268,5 @@ rb_str_comparable(VALUE str1, VALUE str2
     int idx2 = rb_enc_get_index(str2);
     int rc1, rc2;
+    rb_encoding *enc1 = 0, *enc2 = 0;
 
     if (idx1 == idx2) return Qtrue;
@@ -1274,11 +1275,17 @@ rb_str_comparable(VALUE str1, VALUE str2
     if (rc1 == ENC_CODERANGE_7BIT) {
 	if (rc2 == ENC_CODERANGE_7BIT) return Qtrue;
-	if (rb_enc_asciicompat(rb_enc_from_index(idx1)))
+	enc1 = rb_enc_from_index(idx1);
+	if (rb_enc_asciicompat(enc1))
 	    return Qtrue;
     }
     if (rc2 == ENC_CODERANGE_7BIT) {
-	if (rb_enc_asciicompat(rb_enc_from_index(idx2)))
+	enc2 = rb_enc_from_index(idx2);
+	if (rb_enc_asciicompat(enc2))
 	    return Qtrue;
     }
+    if (!enc1) enc1 = rb_enc_from_index(idx1);
+    if (!enc2) enc2 = rb_enc_from_index(idx2);
+    enc1 = rb_enc_originally_compatible(enc1, enc2);
+    if (enc1) return rb_enc_from_encoding(enc1);
     return Qfalse;
 }
@@ -1323,4 +1330,6 @@ VALUE
 rb_str_equal(VALUE str1, VALUE str2)
 {
+    VALUE enc;
+
     if (str1 == str2) return Qtrue;
     if (TYPE(str2) != T_STRING) {
@@ -1330,8 +1339,18 @@ rb_str_equal(VALUE str1, VALUE str2)
 	return rb_equal(str2, str1);
     }
-    if (!rb_str_comparable(str1, str2)) return Qfalse;
-    if (RSTRING_LEN(str1) == RSTRING_LEN(str2) &&
-	rb_str_cmp(str1, str2) == 0) {
-	return Qtrue;
+    switch (enc = rb_str_comparable(str1, str2)) {
+      case Qfalse:
+	return Qfalse;
+      case Qtrue:
+	if (RSTRING_LEN(str1) == RSTRING_LEN(str2) &&
+	    rb_str_cmp(str1, str2) == 0) {
+	    return Qtrue;
+	}
+	break;
+      default:
+	if (rb_funcall(enc, id_strcmp, 2, str1, str2) == INT2FIX(0)) {
+	    return Qtrue;
+	}
+	break;
     }
     return Qfalse;
@@ -5804,4 +5823,5 @@ Init_String(void)
 
     id_to_s = rb_intern("to_s");
+    id_strcmp = rb_intern("strcmp");
 
     rb_fs = Qnil;


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread