Binary String

e$B@.@%$G$9!#e(B

Vincent I. wrote:

      [ruby-core:12816]

e$B$"$!!"$9$G$K$"$C$?$s$G$9$M!#e(B
e$B$9$k$H!"e(Bstr[idx] = num e$B$O$3$s$J46$8$G$7$g$&$+!#e(B

Index: string.c

— string.c (revision 15144)
+++ string.c (working copy)
@@ -2325,7 +2325,10 @@ rb_str_splice(VALUE str, long beg, long

 if (len < 0) rb_raise(rb_eIndexError, "negative length %ld", len);
  • StringValue(val);
  • if (TYPE(val) == T_FIXNUM)
  •   val = rb_funcall(val, rb_intern("chr"), 1, 
    

rb_obj_encoding(str));

  • else
  •   StringValue(val);
    
    rb_str_modify(str);
    enc = rb_enc_check(str, val);
    slen = str_strlen(str, enc);

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33202] Re: Binary String”
on Sun, 20 Jan 2008 06:58:41 +0900, Hidetoshi NAGAI
[email protected] writes:

|e$B$o$+$i$J$$$b$N$H$o$+$ke(B or e$B$o$+$k$H$7$F$$$$$b$N$H$NN>J}$Ke(B
|ASCII-8BIT e$B$,IU$/$3$H$,$“$k$h$&$K8+<u$1$i$l$k$N$G!%!%!%e(B
|
|e$B!V2?$G$3$l$,e(B ASCII-8BIT e$B$K$J$C$A$c$&$N!*!W$H$$$&%1!<%9$,e(B
|e$B0l@ZL5$/$J$k$N$G$”$l$P!$e(BASCII-8BIT e$B$G$b$$$$$s$G$9$,!%e(B

e$B!V0l@ZL5$/$J$k!W$3$H$r;vA0$K>ZL@$9$k$3$H$OIT2DG=$G$9$7!“>ZL@e(B
e$B$G$-$?$H$7$F%a%j%C%H$,$I$l$@$1$”$k$N$+ITF)L@$G$9!#e(B

e$B$3$3$O!“>-Mh!V2?$G$3$l$,e(B ASCII-8BIT e$B$K$J$C$A$c$&$N!!W$H$$$&e(B
e$B%1!<%9$,$“$l$PBP1~$9$k$D$b$j$,$”$k!"$G5v$7$F$b$i$&J}$,7rA4$Je(B
e$B5$$,$7$^$9!#40A4J,N%$O!V$=$l$G$O86M}E
$KBP1~IT2DG=!W$H$$$&%1!<e(B
e$B%9$,$”$C$?;~$K$O$8$a$F9M$($l$P$h$$$N$G$O$J$$$+$H!#e(B

e$BB?J,$K46>pE*!&?4>pE*$J$b$N$b$"$k$N$@$H;W$$$^$9$,!#e(B

e$B$C$F$$$&$+!“7k6I!”?M4V$Oe(BBINARYe$B$C$F8@$C$F$bB?$/$N%1!<%9$Ge(B
ASCII-8BITe$B$r0EL[$K2>Dj$7$F$$$k$3$H$,B?$/!“e(BASCII-8BITe$B$H=c?h$Je(B
BINARYe$B$H$rJ,N%$9$k$HHyL/$JH=JL4p=`$,6/@)$5$l$F;H$$$K$/$=$&!“e(B
e$B$H$$$&M=46$,$”$C$F!”;d$K$H$C$F$=$l$r$/$D$,$($9$[$I!VJ,N%$7$He(B
e$B$1$P0B?4!W$H;W$($J$$$s$G$9$h$M!#e(B

|e$B$3$l$Oe(B “@encoding” e$B$G$9$h$M!)e(B
|e$B$=$NJ}?K$O3NDj$7$F$7$^$C$?$N$G$7$g$&$+!)e(B
|e$B$@$H$7$?$i!$$A$g$C$H:$$k$N$G$O$J$$$+$H;W$$$^$9!%e(B
|e$B<B:]$K!$e(BRuby/Tk 1.8 e$B$G$Ne(B Tk::BinaryString e$BB>e(B e$B$Oe(B
|“@encoding” e$B$H$$$&%$%s%9%?%s%9JQ?t$K>pJs$rJ];}$7$F$^$9$N$G!%e(B

e$B$J$+$@$5$s$N$4;XE&$NDL$je(B"encoding"e$B$GDL>o$N%$%s%9%?%s%9JQ?t$He(B
e$B>WFM$9$k4m81$O$"$j$^$;$s!#e(B

|> e$B$J$s$@$+$($i$/J#;($G$9$,!“e(Bdefault_undefinede$B$r%W%m%0%i%`Cf$+$ie(B
|> e$BJQ99$G$-$k$J$i$=$l$O0l<o$NBg0hJQ?t$J$N$GLLE]$J!V>uBV!W$rF3F~e(B
|> e$B$9$k$3$H$K$J$j$^$9!#%9%l%C%I%;!<%U$8$c$J$/$J$k$7!#$=$l$O$”$^e(B
|
|e$B<BAu$NLdBj$O$h$/J,$+$C$F$$$J$$$N$G$9$,!%$=$&$J$s$G$9$+!)e(B

e$BF1;~$KJ#?t$N%9%l%C%I$,e(BEncoding.default_undefinede$B$rJQ99$7$?$je(B
e$B$9$k$3$H$r9M$($F$_$F$/$@$5$$!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

From: “NARUSE, Yui” [email protected]
Subject: [ruby-dev:33228] Re: Binary String
Date: Mon, 21 Jan 2008 07:12:04 +0900
Message-ID: [email protected]

e$B4JC1$K8@$C$F$7$^$&$H!$e(B
e$B!V$o$+$i$J$$$b$N$K$D$$$F$O!X$o$+$i$J$$!Y$C$F@5D>$K8@$C$A$c$*$&$h!We(B
e$B$C$FOC$G$9!%e(B
e$B$=$&$9$l$P!V$"$l$K$9$Y$-!W$@$H$+!V>!<j$KM?$($k$Y$-$G$O$J$$!W$@$H$+$Ge(B
e$B%4%?%4%?$7$J$$$G$7$g$&$7!$L$Dj5A$r07$$$?$$?M$b$=$&$G$J$$?M$be(B
e$B$I$A$i$bG<F@$G$-$k$h$&$K$G$-$k$+$b$H;W$C$F$^$9!%e(B

e$B7k6I46>p$H$7$F$3$3$K5"Ce$7$F$$$k$N$@$m$&$J$!$H$O;W$C$F$$$?$N$G$9$,!"e(B

e$B$&!A$`!%e(B
e$BC1$K!V46>p$H$7$F!W$N$D$b$j$O$J$$$s$G$9$,!$e(B
e$B$=$&8+$($F$7$^$&$N$G$7$?$i$4$a$s$J$5$$!%e(B

e$B0J2<$NF0:n$ON;2r$J$5$C$F$$$^$9$+!)e(B

  1. s2.encoding e$B$O$:$C$He(BUNDEFINED-8BIT e$B$rJV$9!"$N$Oe$NOC$H$7$F!"e(B
  2. s1 (EUC-JP) + s2 e$B$Oe(B encoding e$B$,0c$&$h%(%i!<e(B
  3. ASCII-8BIT e$B$JJ8;zNs$H$N7k9g!&Hf3S$b%(%i!<e(B
    undefined e$B$H$$$&<q;]$+$i$7$Fe(B dummy e$B%U%i%0$rIU$1$F$7$^$&$He(B
  4. US-ASCII e$B$JJ8;zNs$H$N7k9g!&Hf3S$b%(%i!<e(B
    undefined e$B$C$F$3$H$OL@$i$+$K$J$j$^$9$,!"$3$s$J$b$NK\Ev$KM_$7$$$s$G$9$+!)e(B
    secure ruby e$B$$?$$$J$b$N$,$"$C$?$i$=$3$G$OM$7$=$&$G$9$,!#e(B

e$B$$$(!$!V$=$3$^$G$O<BAu$7$F$$$J$$$@$1!W$N$D$b$j$G$7$?!%e(B
encoding e$B$N%A%'%C%/$r$9$kItJ,$Ge(B UNDEFINED-8BIT e$B$KBP$7$F$Oe(B
e$BBP1~IU$1$i$l$?e(B replica e$B85e(B
(e$B$C$FI=8=$G$$$$$N$G$7$g$&$+!)e(B) e$B$r;2>H$7$Fe(B
e$B=hM}$9$k$h$&$K$9$l$P$$$$$@$m$&$H$$$&$/$i$$$K;W$C$F$^$7$?$,!$e(B
e$B$=$l$OBgJQ$9$.$k$G$7$g$&$+!)e(B

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

From: Yukihiro M. [email protected]
Subject: [ruby-dev:33230] Re: Binary String
Date: Mon, 21 Jan 2008 08:23:16 +0900
Message-ID: [email protected]

e$B!V0l@ZL5$/$J$k!W$3$H$r;vA0$K>ZL@$9$k$3$H$OIT2DG=$G$9$7!“>ZL@e(B
e$B$G$-$?$H$7$F%a%j%C%H$,$I$l$@$1$”$k$N$+ITF)L@$G$9!#e(B

e$B$3$3$O!“>-Mh!V2?$G$3$l$,e(B ASCII-8BIT e$B$K$J$C$A$c$&$N!!W$H$$$&e(B
e$B%1!<%9$,$“$l$PBP1~$9$k$D$b$j$,$”$k!"$G5v$7$F$b$i$&J}$,7rA4$Je(B
e$B5$$,$7$^$9!#40A4J,N%$O!V$=$l$G$O86M}E
$KBP1~IT2DG=!W$H$$$&%1!<e(B
e$B%9$,$”$C$?;~$K$O$8$a$F9M$($l$P$h$$$N$G$O$J$$$+$H!#e(B

e$B$o$+$j$^$7$?!%e(B
e$B!V8=>u$G40A4$K8GDj$5$l$F!$>-Mh$b!V;EMM$G$9!W$N0l8@$Ge(B
e$BJRIU$1$i$l$F$7$^$&!W$H$$$&$o$1$G$O$J$$$H$$$&$3$H$@$1$G$be(B
e$B:#$O==J,$G$9e(B

e$BB?J,$K46>pE*!&?4>pE*$J$b$N$b$"$k$N$@$H;W$$$^$9$,!#e(B

e$B$J$$$H$O8@$$$^$;$s$,!$$=$l$@$1$G$O$J$$$D$b$j$J$s$G$9$,!%!%!%e(B(;_:wink:

e$B$J$+$@$5$s$N$4;XE&$NDL$je(B"encoding"e$B$GDL>o$N%$%s%9%?%s%9JQ?t$He(B
e$B>WFM$9$k4m81$O$"$j$^$;$s!#e(B

e$B;d$N4*0c$$$G$7$?!%$4$a$s$J$5$$!%e(B

|> e$B$J$s$@$+$($i$/J#;($G$9$,!“e(Bdefault_undefinede$B$r%W%m%0%i%`Cf$+$ie(B
|> e$BJQ99$G$-$k$J$i$=$l$O0l<o$NBg0hJQ?t$J$N$GLLE]$J!V>uBV!W$rF3F~e(B
|> e$B$9$k$3$H$K$J$j$^$9!#%9%l%C%I%;!<%U$8$c$J$/$J$k$7!#$=$l$O$”$^e(B
|
|e$B<BAu$NLdBj$O$h$/J,$+$C$F$$$J$$$N$G$9$,!%$=$&$J$s$G$9$+!)e(B

e$BF1;~$KJ#?t$N%9%l%C%I$,e(BEncoding.default_undefinede$B$rJQ99$7$?$je(B
e$B$9$k$3$H$r9M$($F$_$F$/$@$5$$!#e(B

e$B$“!$$$$(!$$=$&$$$&OC$G$O$J$$$D$b$j$G$7$?!%e(B
e$B$3$l$^$G$bBg0hJQ?t$K$D$$$F$OF1$8$3$H$@$C$?$o$1$G$9$+$i!$e(B
e$BFCJL$K2?$+$R$I$/LLE]$JMWAG$,$”$k$N$@$m$&$+$H5?Ld$K;W$C$?$@$1$G$9!%e(B

e$B%5%s%W%k$OC1$K<BAuJ}K!$H$7$Fe(B replica e$B85JQ99$H$$$&J}K!$re(B
e$B;H$($P$$$$$N$G$O$J$$$+$H$$$&DxEY$NOC$G!$e(B
e$B3N$+$K?JF~6X;_=hCV$^$G$O$7$F$$$^$;$s$G$7$?!%e(B

e$B$G$9$,$3$NJ}K!$J$i!$@Dj$NItJ,$@$1$G?JF~6X;=hCV$r$7$5$($9$l$P!$e(B
e$BB>$NItJ,$^$G$O$"$^$j?@7P$r;H$o$J$/$F$b$$$$$N$G$O$J$$$+$He(B
e$B9M$($?$b$N$G!%!%!%e(B

e$B$J$s$@$+;d$O$:$l$?OC$P$+$j$r$7$F$$$k$_$?$$$G$9$M!%e(B

e$B!V46>pE*!W$H$7$+<u$1<h$i$l$F$$$J$$$h$&$G$9$7!$e(B

e$B$b$&!V!X$"$k$,$^$^!Y$r<u$1F~$l$F$J$s$H$+$9$kJ}K!$r9M$($k!We(B

e$B$H$$$&$3$H$@$1$K=8Cf$7$?J}$,$h$5$=$&$G$9!%e(B(;_:wink:

e$B!!e(Bm17n e$B$K$O6a$E$+$J$$$h$&$K$7$F$$$k$5$5$@$G$9!#e(B

Hidetoshi NAGAI wrote:

e$B$J$s$@$+;d$O$:$l$?OC$P$+$j$r$7$F$$$k$_$?$$$G$9$M!%e(B

e$B!V46>pE*!W$H$7$+<u$1<h$i$l$F$$$J$$$h$&$G$9$7!$e(B

e$B!!%W%m%0%i%_%s%08@8l$K$$$$F!"!V46>pE!W$H$$$&$N$OBg;v$JMWAG$@$H;W$$e(B
e$B$^$9!#$=$N<gD%$KBP$7$F!“B>?M$KBP$7$F$I$l$@$1$N@bF@NO$r;}$?$;$i$l$ke(B
e$B$+!”$H$$$&$3$H$G$O$J$$$+$H!#$3$N$h$&$J>l9g!"$$$o$f$kDjNLE*$JI>2A$rMQe(B
e$B$$$?<gD%$,B?$/$N>l9gFq$7$$$?$a!“B>?M$rG<F@$5$;$k$K$O!”$?$H$($P8@$o$le(B
e$B$F$$$k$h$&$K!VNc!W$r;H$&I,MW$,$"$k!"$H$$$&$3$H$+$H;W$$$^$9!#e(B

e$B@.@%$G$9!#e(B

Hidetoshi NAGAI wrote:

encoding e$B$N%A%’%C%/$r$9$kItJ,$Ge(B UNDEFINED-8BIT e$B$KBP$7$F$Oe(B
e$BBP1~IU$1$i$l$?e(B replica e$B85e(B (e$B$C$FI=8=$G$$$$$N$G$7$g$&$+!)e(B) e$B$r;2>H$7$Fe(B
e$B=hM}$9$k$h$&$K$9$l$P$$$$$@$m$&$H$$$&$/$i$$$K;W$C$F$^$7$?$,!$e(B
e$B$=$l$OBgJQ$9$.$k$G$7$g$&$+!)e(B

e$B$"!"<c434*0c$$$7$F$$$?$h$&$G$9!#e(B

e$B$(!<$C$H$3$l$C$F!"e(B

  • Marshal e$B7PM3e(B String e$B$Ne(B encoding e$B$Oe(B ASCII-8BIT
    e$B$K$9$k!%e(B
  • Marshal e$B$+$ie(B string e$B$r<u$1<h$C$?$i!"E,Ev$Ke(B force_encoding
    e$B$G!“e(B
    e$B!!%(%s%3!<%G%#%s%0$r@_Dj!#e(B
    e$B$H$9$k$@$1$G$$$$5$$,$9$k$s$G$9$,!”$J$s$G$3$3$^$GBg$2$5$J5!9=$,I,MW$J$N$Ge(B
    e$B$7$g$&!#e(B

e$BNc$($P!$e(BMarshal e$B%G!<%?$KFCDj$Ne(B encoding e$B$rA[Dj$7$F$$$k>l9g$Oe(B
e$BC1=c$Ke(B default_undefined e$B$K$=$Ne(B encoding e$B$r@_Dj$9$l$P$h$$$7!$e(B

e$B<u$1<h$C$F$+$ie(B force_encoding e$B$8$c$@$a$G$9$+!#e(B

Marshal e$B%G!<%?$NCf$Ke(B encoding e$B;XDj$r4^$s$G$$$k>l9g$O!$e(B
e$BJ8;zNsA`:n$NA0$K$=$Ne(B encoding e$B$re(B default_undefined e$B$Ke(B
encoding e$B$r$r@_Dj$9$l$P$h$$!%e(B

ASCII-8BIT
e$B$G<u$1<h$C$F!“E,Ev$K%^%C%A$5$;$k$J$j$7$F%(%s%3!<%G%#%s%0$rCNe(B
e$B$j!”$=$N>pJs$r;H$C$Fe(B force_encoding e$B$r;H$($P$$$$$G$9$h$M!#e(B

e$B$J$*!"$3$3$G%^%C%A$5$;$?$j$9$k$?$a$Ke(B ASCII

e$B8_49@-$,I,MW$J$N$G!"e(B

ASCII e$B8_49%*%/%F%C%HNse(B e$B"*e(B ASCII-8BIT e$B$J$N$G$9e(B

e$B$3$l$@$He(B UNDEFINED-8BIT e$B$de(B Encoding.default_undefined
e$B$O$$$j$^$;$s$h$M!#e(B

e$B@.@%$G$9!#e(B

SASADA Koichi wrote:

e$B$F$$$k$h$&$K!VNc!W$r;H$&I,MW$,$"$k!"$H$$$&$3$H$+$H;W$$$^$9!#e(B
e$B!V46>pE*!W$@$H8lJ@$,$"$k$+$b$7$l$^$;$s!#$J$s$H$$$&$+!"e(BASCII-8BIT
e$B0J30$Ne(B
e$B2?$+$,M_$7$$$H$$$&$N$,@h9T$7$F$$$k$h$&$K46$8$i$l$^$9!#e(B

ASCII-8BIT e$B$re(B ASCII
e$B8_49%*%/%F%C%HNs$H2r<a$7$?>e$G!"$3$l0J30$N$b$N$rF3F~e(B
e$B$9$k$He(B ASCII-8BIT
e$B$H$N7k9g!&Hf3S$,$G$-$J$/$J$k$3$H$r9M$($k$H!"JL$N2?$+$re(B
e$BF3F~$9$k$3$H$O:$Fq$H$$$&J}8~$K$J$k$H;W$&$N$G$9$,!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33236] Re: Binary String”
on Mon, 21 Jan 2008 13:14:21 +0900, Hidetoshi NAGAI
[email protected] writes:

|# e$B$J$s$@$+;d$O$:$l$?OC$P$+$j$r$7$F$$$k$$?$$$G$9$M!%e(B
|# e$B!V46>pE*!W$H$7$+<u$1<h$i$l$F$$$J$$$h$&$G$9$7!$e(B
|# e$B$b$&!V!X$"$k$,$^$^!Y$r<u$1F~$l$F$J$s$H$+$9$kJ}K!$r9M$($k!We(B
|# e$B$H$$$&$3$H$@$1$K=8Cf$7$?J}$,$h$5$=$&$G$9!%e(B(;
:wink:

e$B!V46>pE*!W$H$$$&I=8=$G1J0f$5$s$,=}$D$$$?$N$G$7$?$i$4$a$s$J$5e(B
e$B$$!#;d$?$A$b1J0f$5$s$,!V:$$C$F$$$k$3$H!W$rFI$<h$j$?$$$N$G$9e(B
e$B$,!"8=;~E@$G$O!V%P%$%J%j$H%F%-%9%H$,J,N%$5$l$F$$$J$$$N$r$J$se(B
e$B$H$+$7$?$$!W$7$+FI$
<h$l$F$$$J$$$N$G$9!#e(B

e$B;d<+?H$O!V%P%$%J%j$H%F%-%9%H$r40A4J,N%$7$J$/$F$b$&$^$/9T$/$Ne(B
e$B$G$O$J$$$+!W$H46$8$F$$$k$N$G!“!V%P%$%J%j$H%F%-%9%H$,e(B(e$B40A4e(B)e$BJ,e(B
e$BN%$5$l$F$$$k$Y$-!W$H$$$&9M$($H$OBPN)$7$,$A$G$9!#;de(B(e$B$?$Ae(B)e$B$,4Ve(B
e$B0c$C$F$$$k2DG=@-$b$”$j$^$9$,!"$=$l$K$7$F$b$b$&$A$g$C$H6qBNE*e(B
e$B$K!V$3$&$$$&%1!<%9$G$&$^$/$$$+$J$$!W$H;XE&$7$F$$$?$@$+$1$k$He(B
e$B!V4V0c$$$rG’$a$d$9$$!W$o$1$G$9!#e(B

e$B!V$3$&$$$&%W%m%0%i%`$,$“$C$F!”$3$s$JLLE]$J$3$H$r$7$J$$$HJ8;ze(B
e$B2=$1$9$k!W$H$+!"!Ve(BTcl e$B$G$O$3$s$J$K%9%H%l!<%H$K=q$1$k$N$Ke(B
(Rubye$B$N$;$$$Ge(B)Ruby/Tke$B$G$O$3$s$J$K2s$j$/$I$$!W$H$+8@$C$F$/$@$5e(B
e$B$k$H=u$+$j$^$9!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$BM73Z0C$G$9!#e(B

NARUSE, Yui e$B$5$s$O=q$-$^$7$?e(B:

e$B@.@%$G$9!#e(B

e$B!V46>pE*!W$@$H8lJ@$,$"$k$+$b$7$l$^$;$s!#$J$s$H$$$&$+!"e(BASCII-8BIT e$B0J30$Ne(B
e$B2?$+$,M_$7$$$H$$$&$N$,@h9T$7$F$$$k$h$&$K46$8$i$l$^$9!#e(B

ASCII-8BIT e$B$re(B ASCII e$B8_49%*%/%F%C%HNs$H2r<a$7$?>e$G!"$3$l0J30$N$b$N$rF3F~e(B
e$B$9$k$He(B ASCII-8BIT e$B$H$N7k9g!&Hf3S$,$G$-$J$/$J$k$3$H$r9M$($k$H!"JL$N2?$+$re(B
e$BF3F~$9$k$3$H$O:$Fq$H$$$&J}8~$K$J$k$H;W$&$N$G$9$,!#e(B

e$B$"$j$c!"$d$C$Q$j!Ve(BASCIIe$B8_49!W$H$$$&2>Dj$OF~$C$F$7$^$&$N$G$9$+!#e(B
e$B$=$l$@$H$J$s$+%P%$%J%j%G!<%?$N%$%a!<%8$+$i$O30$l$F9T$C$A$c$$$^$9$M!#e(B
e$B!Ve(BASCIIe$B8_49!W$H$$$&$3$H$OB>$N%3!<%I$Ke(Bencode(force_encodee$B$G$O$J$/e(B)e$B$7$?$ie(B
e$BJQ49$5$l$A$c$$$^$9$h$M!#EvA3!#e(B

e$BNc$($P!"e(BUNIXe$B$N!Ve(Bstringse$B%3%^%s%I!W$_$?$$$N$r<BAu$9$k$3$H$r9M$($k$He(B
e$B%%V%8%’%/%H%U%!%$%k$O%P%$%J%j$J$N$G!"%P%$%J%j%b!<%I$G%!<%W%s$7$Fe(B
e$BFI$9~$s$@%G!<%?$b%P%$%J%j$G$9!#e(B
e$B$3$3$Ge(Bencodinge$B$O!Ve(BASCII-8BITe$B!W$K$J$j$^$9!#e(B
e$B$G!"$3$N%G!<%?$+$ie(BUTF-16e$B$NJ8;zNs$r@Z$j=P$7$F!“e(Bencode(“UTF-16”)e$B$9$k$He(B
e$B85$NJ8;zNs$,e(BUTF-16e$B$J$N$K$b94$i$:!”$5$i$K!Ve(BASCIIe$B"*e(BUTF-16e$B!W$,$+$+$C$Fe(B
e$BJ8;zNs$,2u$l$^$9!#e(B
force_encodinge$B$7$m$H8@$o$l$F$7$^$($P$=$l$^$G$J$s$G$9$,!“e(B
e$B3N$+!Ve(Bforce_encodinge$B!W$C$F%(%-%9%Q!<%H8~$1%a%=%C%I$H$$$&OC$G$9$h$M!#e(B
e$B$3$N=hM}$,$=$s$J$K%(%-%9%Q!<%H$J=hM}$@$H;W$$$^$;$s!#e(B
e$B$J$N$G!”!Ve(BASCII-8BITe$B!W$,!Ve(BASCIIe$B8_49!W$r2>Dj$9$k$J$i!"e(B
encodee$B$G$b%3!<%I%3%s%P!<%8%g%s$,$+$+$i$J$$$3$H$rJ]>Z$9$k!Ve(BBINARYe$B!We(B
e$B$b$7$/$O$=$lAjEv$N%(%s%3!<%G%#%s%0$,M
$7$/$J$C$F$7$^$$$^$9$M!#e(B

e$B$"$H$b$&0l$D!“L5@UG$$J%”%$%G%"$J$s$G$9$,!"e(B
encodinge$B$,!Ve(BBINARYe$B!W$N;~$O!"e(BString#[]e$B$de(BString#[]=e$B$,e(BIntegere$B$rJV$7$?$je(B
e$B@_Dj$7$?$j$G$-$k$H!“e(BStringe$B$r;H$C$F7W;;$7$F$k?M$b4n$V$s$8$c$J$$$+$He(B
e$B;W$$$^$9!#e(B[ruby-dev:33186]e$B$K$”$C$?$h$&$J%d%D$G$9!#e(B
e$B$3$NF0:n$Oe(B1.8e$B8_49$J$N$G!"4n$V?M$b$$$k$+$H;W$&$N$G$9$,!De(B

e$B<BAu$NET9g$O0l@Z9MN8$7$F$*$j$^$;$s$N$GL5M}$+$b$7$l$^$;$s$,e(B
e$B9M$($F$$$?$@$1$k$H4r$7$$$G$9!#e(B

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

From: Yukihiro M. [email protected]
Subject: [ruby-dev:33248] Re: Binary String
Date: Mon, 21 Jan 2008 18:11:42 +0900
Message-ID: [email protected]

e$B!V$3$&$$$&%W%m%0%i%`$,$“$C$F!”$3$s$JLLE]$J$3$H$r$7$J$$$HJ8;ze(B
e$B2=$1$9$k!W$H$+!"!Ve(BTcl e$B$G$O$3$s$J$K%9%H%l!<%H$K=q$1$k$N$Ke(B
(Rubye$B$N$;$$$Ge(B)Ruby/Tke$B$G$O$3$s$J$K2s$j$/$I$$!W$H$+8@$C$F$/$@$5e(B
e$B$k$H=u$+$j$^$9!#e(B

e$B$A$g$C$H8m2r$5$l$F$$$k$h$&$J5$$,$9$k$N$G!$G0$N$?$a$G$9$,!$e(B
Ruby/Tk e$B<+BN$K$D$$$F$Oe(B

From: Hidetoshi NAGAI [email protected]
Subject: [ruby-dev:33127] Re: Binary String
Date: Wed, 16 Jan 2008 10:21:14 +0900
Message-ID: [email protected]

e$B$H$$$&BP1~$G!$8_49@-$r<N$F$ke(B (e$B=>Mh$N%9%/%j%W%H$O6K$a$F9b$$3NN($Ge(B
e$BJ8;z2=$1$9$ke(B) e$B$H$$$&$3$H$K$J$j$^$9!%e(B

e$B$H$$$&$h$&$K!$<+$i$N<g5A$K$OH?$7$D$D$b8_49@-$r<N$F5n$k$3$H$Ke(B
e$BBE6($O$7$F$$$^$9!%e(B
e$B$?$@!$$=$N8e$Ne(B [ruby-dev:33161], [ruby-dev:33162] e$B$H$+$Ge(B
e$B5$$K$J$kOC$b=P$F$$$k$N$G!$$=$N$^$^BE6($7$F$bK\Ev$KBg>fIW$J$N$+$,e(B
e$B$A$g$C$H?4G[$K$J$C$F$O$$$^$9$,!%e(B(^_^)

e$B8=>u$,JQ2=$7$?$j!$K\Ev$K$I$&$7$h$&$b$J$$Nc$,8+$D$+$l$Pe(B

e$BE12s$;$6$k$r$($J$$$H$$$&$3$H$K$J$k$+$b$7$l$^$;$s!%e(B

e$B$K$b$+$+$o$i$:e(B UNDEFINED-8BIT
e$B$J$s$FOC$r=P$7$?$j$7$F$$$k$N$O!$e(B
e$B$5$^$6$^$J30It%i%$%V%i%j$r%V%i%C%/%%C%/%9$H$7$FMQ$$$k>l9g$re(B
e$B9M$($F$N$3$H$G$9!%e(B
e$B$D$^$j!$30It%i%$%V%i%j$N%a%=%C%I$NLaCM$Ne(B encoding e$B$re(B
e$B$I$3$^$G?.$8$?$i$$$$$+$H$$$&OC$G$b$"$j$^$9!%e(B

ASCII-8BIT e$B$GJV$C$F$-$?$H$7$F!$e(B
e$B$3$l$OI,A3$Ge(B ASCII-8BIT e$B$K$J$C$F$$$k$N$+!$e(B
e$B$=$l$H$bL$Dj5A$N$?$a$d$`$r$($:e(B ASCII-8BIT
e$B$K$J$C$F$$$k$N$+!%!%!%e(B
Ruby 1.9 e$BMQ$N30It%i%$%V%i%j$J$i$$$$$N$G$9$,!$e(B
e$BK\Mh$Oe(B Ruby 1.8
e$BMQ$G$"$k30It%i%$%V%i%j$r1gMQ$7$F$$$k%1!<%9$G$Oe(B
e$B>/!9$d$C$+$$$G$9!%e(B
e$B;v<Be(B Marshal e$B$N%1!<%9$G$O!$2?$H$+BP:v$9$k$?$a$Ke(B
e$B%i%$%V%i%j$K<j$rF~$l$6$k$rF@$J$+$C$?$o$1$G$9$h$M!)e(B

e$B$b$A$m$s$3$3$Ge(B Ruby/Tk e$B$N>l9g$HF1MM$Ke(B
e$B!Ve(BRuby 1.8 e$BMQ$N%i%$%V%i%j$r;H$&J}$,0-$$!W$H$+!$e(B
e$B!Ve(BRuby 1.8
e$BMQ$N%i%$%V%i%j$GJ8;zNs$r07$&$b$N$O$[$H$s$ID|$a$F$/$@$5$$!We(B
e$B$H$9$k$3$H$b$G$-$^$9!%e(B
e$B$=$l$b3N$+$K0l$D$NA*Br;h$G$7$g$&!%e(B
e$B3+H/$,7QB3$7$F$$$k%i%$%V%i%j$G$“$l$P!$$$$D$+$OJ]>Z$G$-$^$;$s$,!$e(B
e$BB?J,!$e(BRuby 1.9
e$BBP1~$O9T$o$l$k$@$m$&$H4|BT$9$k$3$H$O2DG=$G$9!%e(B
e$B$”$k$$$O!$<+J,$G$=$N%i%$%V%i%j$N2r@O$,$G$-$k?M$J$ie(B
e$B<+J,$G%Q%C%A$r:n@.$7$FMxMQ2DG=$K$9$k$3$H$,$G$-$k$+$b$7$l$^$;$s!%e(B

e$B$G$9$,!$$=$&$G$J$$?M$N>l9g$O$I$&$G$7$g$&!)e(B
e$B3+H/$,Dd;_$7$F%V%i%C%/%%C%/%9$H$J$C$F$$$k%i%$%V%i%j$,e(B
e$B$I$&$7$F$bI,MW$J?M$d!$e(B1.9 e$BBP1~$r$I$&$7$F$bBT$F$J$$?M$O!)e(B
e$B$9$Y$F$N%1!<%9$G!VD|$a$Fe(B 1.8 e$B$r;H$$B3$1$F$M!W$HEz$($k$N$re(B
e$B@'$H$9$k$N$+$I$&$+$G$9!%e(B

e$B:,K\E*$KBP1~IT2DG=$J%1!<%9$,$"$k$N$O>5CN$7$F$$$^$9$+$i!$e(B

e$B$=$N$h$&$J>l9g$O4^$a$F$$$^$;$s!%e(B

e$B!Ve(BRuby 1.9 e$B<+BN$,$$$m$$$mJQ$C$F$$$k$s$@$+$i!W$H$$$&$N$Oe(B

e$B!Ve(BRuby 1.8

e$B$N$b$N$O$9$Y$F;H$($J$$!W$HF10U$G$O$J$$$G$9$h$M!%e(B

UNDEFINED-8BIT e$B$O$3$&$7$?>l9g$N5_:Q:v$K$J$k$N$G$O$J$$$+$H9M$($Fe(B
e$BOC$K=P$7$?$b$N$G$9!%e(B
e$BD>@$K$O<j$,FO$+$J$$%i%$%V%i%jFbIt$N=hM}$Ke(B
e$B%G%U%)%k%H$Ne(B encoding e$B$N>pJs$rM?$($k$3$H$,$G$-$^$9!%e(B
e$B$=$N7k2L!$e(Bencoding e$B$,L@5-$5$l$F$$$J$$J8;zNs$re(B
e$B4|BT$9$ke(B encoding e$B$GE,@Z$K=hM}$7$F$b$i$($k$h$&$Ke(B
e$B$G$-$k2DG=@-$,9b$^$j$^$9!%e(B
e$B$^$?!$e(BUNDEFINED-8BIT e$B$GJV$5$l$?$J$i$P!$e(B
e$BB>$Ne(B encoding e$B$N>l9g$H0c$C$Fe(B Ruby 1.9
e$B$H$7$F$N=hM}$N7k2L$Ne(B
e$BI,A3$H$7$FF@$i$l$?$b$N$G$O$J$$$H$$$&$3$H$,J,$+$j$^$9!%e(B
e$B$=$l$,J,$+$l$P9%$-$J$h$&$KNAM}$9$k$3$H$,$G$-$^$9!%e(B

UNDEFINED-8BIT e$B$N$h$&$J$b$N$,B8:_$7$J$1$l$P!$e(B
e$B%V%i%C%/%%C%/%9$NLaCM$O$9$Y$FF1$8e(B encoding e$B$G$“$k$He(B
e$B?dDj$9$k$7$+$”$j$^$;$s!%e(B

e$B:#2s$b!V2?$@$+NI$/J,$+$i$J$$$3$H$r46>pE*$KC}$C$F$$$k!W$He(B

e$B;W$o$l$F=*$o$j$+$J$!!%!%!%e(B(^_^;

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:33278] Re: Binary String”
on Jan.22,2008 23:44:58, [email protected] wrote:
| e$BNc$($P!“e(BUNIXe$B$N!Ve(Bstringse$B%3%^%s%I!W$_$?$$$N$r<BAu$9$k$3$H$r9M$($k$He(B
| e$B%%V%8%'%/%H%U%!%$%k$O%P%$%J%j$J$N$G!"%P%$%J%j%b!<%I$G%!<%W%s$7$Fe(B
| e$BFI$_9~$s$@%G!<%?$b%P%$%J%j$G$9!#e(B
| e$B$3$3$Ge(Bencodinge$B$O!Ve(BASCII-8BITe$B!W$K$J$j$^$9!#e(B
| e$B$G!”$3$N%G!<%?$+$ie(BUTF-16e$B$NJ8;zNs$r@Z$j=P$7$F!“e(Bencode(“UTF-16”)e$B$9$k$He(B
| e$B85$NJ8;zNs$,e(BUTF-16e$B$J$N$K$b94$i$:!”$5$i$K!Ve(BASCIIe$B"*e(BUTF-16e$B!W$,$+$+$C$Fe(B
| e$BJ8;zNs$,2u$l$^$9!#e(B
| force_encodinge$B$7$m$H8@$o$l$F$7$^$($P$=$l$^$G$J$s$G$9$,!"e(B
| e$B3N$+!Ve(Bforce_encodinge$B!W$C$F%(%-%9%Q!<%H8~$1%a%=%C%I$H$$$&OC$G$9$h$M!#e(B
| e$B$3$N=hM}$,$=$s$J$K%(%-%9%Q!<%H$J=hM}$@$H;W$$$^$;$s!#e(B

e$B$$$d$$$d!“e(Bforce_encodinge$B$O!VIaDL$O;H$o$J$$%a%=%C%I!W$H$$$&OCe(B
e$B$J$s$@$H;W$$$^$9!#e(B
e$B$D$^$j!”:#e(BRubye$B$KF3F~$7$h$&$H$7$F$$$k;EMM>e$G$O!“4pK\E*$K$OA4e(B
e$B$F$NJ8;zNs$O<+J,$Ne(Bencodinge$B$rCN$C$F$k$o$1$G$9$h$M!#e(B
e$B$@$+$i!”$=$l$r6/@)E*$KCV$-49$($ke(Bforce_encodinge$B$OIaDL$O;H$o$Je(B
e$B$/$F$$$$!"$H!#e(B

e$B$G$9$,!“$?$^$K!“F~NO$7=$o$C$FJ8;zNs%%V%8%'%/%H$,$G$-$F$+$ie(B
e$B$8$c$J$$$He(Bencodinge$B$,@_Dj$G$-$J$$$h$&$J%W%m%0%i%`$r=q$+$J$$$He(B
e$B$$$1$J$$>l9g$b3N$+$K$”$k$o$1$G$9!#e(B
e$B:#2s$NNc$O$^$5$K$=$&$$$&%Q%?!<%s$G!“F~NO$5$l$?%P%$%HNs$N$I$3e(B
e$B$+$r!”%W%m%0%i%^$@$1$,CN$C$F$$$kJ}K!$G@Z$j=P$7$F!”%W%m%0%i%^e(B
e$B$@$1$,CN$C$F$$$ke(Bencodinge$B$NJ8;zNs$G$“$k!”$H;XDj$9$kI,MW$,$"$k!"e(B
e$B$H$$$&$b$N$G$9$h$M!#e(B
force_encodinge$B$O$^$5$K$3$N%Q%?!<%s$N$?$a$K$o$6$o$6MQ0U$5$l$Fe(B
e$B$$$k$o$1$G$9!#e(B

| e$B$J$N$G!"!Ve(BASCII-8BITe$B!W$,!Ve(BASCIIe$B8_49!W$r2>Dj$9$k$J$i!"e(B
| encodee$B$G$b%3!<%I%3%s%P!<%8%g%s$,$+$+$i$J$$$3$H$rJ]>Z$9$k!Ve(BBINARYe$B!We(B
| e$B$b$7$/$O$=$lAjEv$N%(%s%3!<%G%#%s%0$,M_$7$/$J$C$F$7$^$$$^$9$M!#e(B

e$B$D$^$j%P%$%HNs$rJQ49$7$J$$$Ge(Bencodinge$B$@$1$rIU$1BX$($?$$!“$H$$e(B
e$B$&$3$H$G$9$h$M!#e(B
e$B$=$l$,e(Bforce_encodinge$B$N5!G=$J$N$G$9$+$i!“e(Bforce_encodinge$B$r;H$&e(B
e$B$Y$-$G$”$j!”$=$7$Fe(Bforce_encodinge$B$O85$Ne(Bencodinge$B$rL5;k$9$k$+$ie(B
e$B85$O$J$s$G$b$$$$$H$$$&$3$H$K$J$j$^$9!#e(B

| e$B$“$H$b$&0l$D!“L5@UG$$J%”%$%G%”$J$s$G$9$,!"e(B
| encodinge$B$,!Ve(BBINARYe$B!W$N;~$O!"e(BString#[]e$B$de(BString#[]=e$B$,e(BIntegere$B$rJV$7$?$je(B
| e$B@_Dj$7$?$j$G$-$k$H!“e(BStringe$B$r;H$C$F7W;;$7$F$k?M$b4n$V$s$8$c$J$$$+$He(B
| e$B;W$$$^$9!#e(B[ruby-dev:33186]e$B$K$”$C$?$h$&$J%d%D$G$9!#e(B
| e$B$3$NF0:n$Oe(B1.8e$B8_49$J$N$G!"4n$V?M$b$$$k$+$H;W$&$N$G$9$,!De(B

1.9e$B$G$3$3$,JQ$o$C$?$N$,$$$$$N$+0-$$$N$+$O$H$b$+$/!“e(Bencodinge$B$Ke(B
e$B$h$C$F%a%=%C%I$NLa$jCM$N7?$,JQ$o$k$N$O$5$9$,$K4r$7$/$J$$$G$7e(B
e$B$g$&!#e(B
e$B$H$J$k$H!”%P%$%HNs$r$=$N$^$^I=8=$9$k%/%i%9$rMQ0U$9$k$+!“J8;ze(B
e$BNs$r%P%$%HNs$H$_$J$7$FA`:n$9$k%a%=%C%I$rMQ0U$9$k$+!”$$$:$l$+e(B
e$B$K$J$k$N$G$O$J$$$+$H;W$$$^$9!#e(B

e$B$H!"$$$&$N$,!"e(B[ruby-dev:33192]e$B$G$9$M!#e(B

e$BA0<T$G$“$l$P$=$N%/%i%9$K$O$b$A$m$s!9e(Bencodinge$B$J$s$F$J$$$G$7$ge(B
e$B$&$7!“8e<T$G$”$l$P$=$N%a%=%C%I$r;H$&>l9g$K$OJ8;zNs$Ne(Bencoding
e$B$O2?$G$”$C$F$bL5;k$5$l$k$o$1$G!"$$$:$l$K$;$h!Ve(BBINARYe$B!W$H$$$&e(B
encodinge$B$OITMW$H$$$&$3$H$K$J$j$^$9!#e(B

e$B$H$$$&$o$1$G!“:#2s$NNc$O!Ve(BBINARYe$B!W$H$$$&FHN)$7$?e(Bencodinge$B$rF3e(B
e$BF~$9$Y$-$G$”$k$H$$$&:,5r$K$O$J$i$J$$$H;W$$$^$9!#e(B

e$B;d<+?H$O!“2?EY$+!Ve(BBINARYe$B!WITMWO@B&$KN)$C$?%a!<%k$rEj$2$F$^$9e(B
e$B$1$I!”<B:]$K$O!“:,5r$N$J$$D>46$G$O$”$j$^$9$,!“!Ve(BBINARYe$B!W$H$$e(B
e$B$&e(Bencodinge$B$,I,MW$J6ILL$,K\Ev$O$”$k$N$G$O$J$$$+!“$H;W$C$F$$$^e(B
e$B$9!#e(B
e$B$,!”$=$N6ILL$r<($9Nc$,$^$@8+$D$+$i$J$$$s$G$9$h$M$(!#e(B

e$B1J0f@h@8$Ne(B[ruby-dev:33281]e$B$N$h$&$K!"8_49@-$H$$$&$+e(B1.8e$B$H$NAj8_e(B
e$B1?MQ@-$NLL$+$i9M$($k$H2?$+=P$F$-$=$&$K$O;W$&$N$G$9$,!"e(Bm17ne$B$Ne(B
e$B;EMM$O$=$l$r3d$j@Z$C$?7k2L$@$H8@$o$l$k$H$=$l$b$=$&$G$9$7e(B…

e$B$=$l$G$O!#e(B

e$B@.@%$G$9!#e(B

e$BM73Z0Ce(B wrote:

e$B!V46>pE*!W$@$H8lJ@$,$"$k$+$b$7$l$^$;$s!#$J$s$H$$$&$+!"e(BASCII-8BIT e$B0J30$Ne(B
e$B2?$+$,M_$7$$$H$$$&$N$,@h9T$7$F$$$k$h$&$K46$8$i$l$^$9!#e(B

ASCII-8BIT e$B$re(B ASCII e$B8_49%*%/%F%C%HNs$H2r<a$7$?>e$G!"$3$l0J30$N$b$N$rF3F~e(B
e$B$9$k$He(B ASCII-8BIT e$B$H$N7k9g!&Hf3S$,$G$-$J$/$J$k$3$H$r9M$($k$H!"JL$N2?$+$re(B
e$BF3F~$9$k$3$H$O:$Fq$H$$$&J}8~$K$J$k$H;W$&$N$G$9$,!#e(B

e$B$"$j$c!"$d$C$Q$j!Ve(BASCIIe$B8_49!W$H$$$&2>Dj$OF~$C$F$7$^$&$N$G$9$+!#e(B
e$B$=$l$@$H$J$s$+%P%$%J%j%G!<%?$N%$%a!<%8$+$i$O30$l$F9T$C$A$c$$$^$9$M!#e(B

e$B$_$s$J$,;}$C$F$$$k%P%$%J%j%G!<%?$N%$%a!<%8$K$O<B$Oe(B ASCII
e$B8_49$,F~$C$F$$e(B
e$B$k$N$G$O$J$$$+!"$H$$$&$N$,A0Ds$J$N$G!"<B:]$O30$l$F$O$$$J$$5$$,$7$^$9!#e(B

force_encodinge$B$7$m$H8@$o$l$F$7$^$($P$=$l$^$G$J$s$G$9$,!“e(B
e$B3N$+!Ve(Bforce_encodinge$B!W$C$F%(%-%9%Q!<%H8~$1%a%=%C%I$H$$$&OC$G$9$h$M!#e(B
e$B$3$N=hM}$,$=$s$J$K%(%-%9%Q!<%H$J=hM}$@$H;W$$$^$;$s!#e(B
e$B$J$N$G!”!Ve(BASCII-8BITe$B!W$,!Ve(BASCIIe$B8_49!W$r2>Dj$9$k$J$i!"e(B
encodee$B$G$b%3!<%I%3%s%P!<%8%g%s$,$+$+$i$J$$$3$H$rJ]>Z$9$k!Ve(BBINARYe$B!We(B
e$B$b$7$/$O$=$lAjEv$N%(%s%3!<%G%#%s%0$,M_$7$/$J$C$F$7$^$$$^$9$M!#e(B

force_encoding
e$B$r;H$C$F$/$@$5$$!"$G$9$M!#==J,$K!V%(%-%9%Q!<%H!W$@$H;W$$e(B
e$B$^$9!#$"$/$^$GHf3S$NLdBj$H$7$Fe(B encode
e$B$h$j;H$&5!2q$,>/$J$$$@$m$&$+$i:.F1e(B
e$B$7$J$$$h$&$KD9$/$J$C$F$$$k$H$$$&$@$1$G!#@dBPE*$JHf3S$G$J$/AjBPE*$JHf3S$Ge(B
e$B$9$J!#e(B

e$B$H$3$m$G!"%P%$%J%j%G!<%?$+$ie(B UTF-16 e$BJ8;zNs$r<h$j=P$95!2q$h$je(B
ASCII e$BJ8;ze(B
e$BNs$r<h$j=P$95!2q$O$O$k$+$KB?$$$H;W$&$N$G$9$,!"$=$&$$$&;~$K$$$A$$$AJQ49$;e(B
e$B$:$K%^%C%A$5$;$i$l$k$N$OBg$-$J%a%j%C%H$G$9$h$M!#e(B

e$B$"$H$b$&0l$D!“L5@UG$$J%”%$%G%"$J$s$G$9$,!"e(B
encodinge$B$,!Ve(BBINARYe$B!W$N;~$O!"e(BString#[]e$B$de(BString#[]=e$B$,e(BIntegere$B$rJV$7$?$je(B
e$B@_Dj$7$?$j$G$-$k$H!“e(BStringe$B$r;H$C$F7W;;$7$F$k?M$b4n$V$s$8$c$J$$$+$He(B
e$B;W$$$^$9!#e(B[ruby-dev:33186]e$B$K$”$C$?$h$&$J%d%D$G$9!#e(B
e$B$3$NF0:n$Oe(B1.8e$B8_49$J$N$G!"4n$V?M$b$$$k$+$H;W$&$N$G$9$,!De(B

String#[] e$B$NLa$jCM$N%/%i%9$,e(B encoding
e$B$K$h$C$FJQ$o$k$N$O$$$+$,$J$b$N$+e(B
e$B$H!#e(BString
e$B$GE}0l$5$l$F$$$kJ}$,$$$$$s$8$c$J$$$+$J$!$H;W$$$^$9!#e(B

e$B8D?ME*$K$OJ8;z$r<h$j=P$9$N$Oe(B str[i,1] e$B$G$G$-$k$N$G!"e(B

str[i]

e$B$O%3!<%I%]%$%s%H$rJV$9$^$^$G$h$+$C$?$H;W$&$s$G$9$1$I$M$’!#e(B

String#[]= Integer
e$B$O%Q%C%A=q$$$?$3$H$,$"$j$^$9$,!"$$$^$$$A<u$1$,0-$$$_e(B
e$B$?$$!#e(BString#bytes[]= e$B$H$+$NJ}8~$K$J$C$F$$$/$N$G$9$+$M$’!#e(B

e$B@.@%$G$9!#e(B

Hidetoshi NAGAI wrote:

e$BK\Mh$Oe(B Ruby 1.8 e$BMQ$G$"$k30It%i%$%V%i%j$r1gMQ$7$F$$$k%1!<%9$G$Oe(B
e$B>/!9$d$C$+$$$G$9!%e(B

e$B$4$b$C$H$b$J;XE&$@$H;W$$$^$9!#e(B

e$B;v<Be(B Marshal e$B$N%1!<%9$G$O!$2?$H$+BP:v$9$k$?$a$Ke(B
e$B%i%$%V%i%j$K<j$rF~$l$6$k$rF@$J$+$C$?$o$1$G$9$h$M!)e(B

e$B8e=R$7$^$9$,!"8=CJ3,$G$O<j$rF~$l$F$^$;$s$M!#e(B

e$B$G$9$,!$$=$&$G$J$$?M$N>l9g$O$I$&$G$7$g$&!)e(B
e$B3+H/$,Dd;_$7$F%V%i%C%/%%C%/%9$H$J$C$F$$$k%i%$%V%i%j$,e(B
e$B$I$&$7$F$bI,MW$J?M$d!$e(B1.9 e$BBP1~$r$I$&$7$F$bBT$F$J$$?M$O!)e(B
e$B$9$Y$F$N%1!<%9$G!VD|$a$Fe(B 1.8 e$B$r;H$$B3$1$F$M!W$HEz$($k$N$re(B
e$B@'$H$9$k$N$+$I$&$+$G$9!%e(B

e$B0l5AE*$K$O%i%$%V%i%jB&$re(B 1.9
e$BBP1~$5$;$k$N$,%Y%9%H$J$o$1$G$9$,!“%i%$%V%ie(B
e$B%jB&$K<j$rF~$l$i$l$J$$$3$H$,A0Ds$J$i$Pe(B [ruby-dev:33269]
e$B$N$h$&$Ke(B e$BESCf$Ge(B
force_encoding e$B$7$?$j!”%*%V%8%'%/%H$r<u$1<h$C$F$+$ie(B force_encoding
e$B$9$le(B
e$B$P$$$$$G$7$g$&!#e(B1.8
e$BHsBP1~$J$N$O$o$+$C$F$$$k$N$@$+$i!“;H$&B&$,e(B
force_encoding e$B$9$l$P$$$$$h$M!”$H!#e(B

UNDEFINED-8BIT e$B$O$3$&$7$?>l9g$N5_:Q:v$K$J$k$N$G$O$J$$$+$H9M$($Fe(B
e$BOC$K=P$7$?$b$N$G$9!%e(B
e$BD>@$K$O<j$,FO$+$J$$%i%$%V%i%jFbIt$N=hM}$Ke(B
e$B%G%U%)%k%H$Ne(B encoding e$B$N>pJs$rM?$($k$3$H$,$G$-$^$9!%e(B
e$B$=$N7k2L!$e(Bencoding e$B$,L@5-$5$l$F$$$J$$J8;zNs$re(B
e$B4|BT$9$ke(B encoding e$B$GE,@Z$K=hM}$7$F$b$i$($k$h$&$Ke(B
e$B$G$-$k2DG=@-$,9b$^$j$^$9!%e(B

e$B<c43$3$3$N2>Dj$,$*$+$7$$$h$&$K;W$$$^$9!#$=$N!V<j$NFO$+$J$$%i%$%V%i%jFbe(B
e$BIt!W$O$9$Y$Fe(B encoding e$BHsBP1~$J$N$G!"e(Bencoding
e$B$,@_Dj$5$l$F$$$kI,MW$O$J$$e(B
e$B$G$7$g$&!#e(Bencoding
e$B$,I,MW$K$J$k$N$O<j$,FO$/$H$3$m$^$GMh$F$+$i$G$9$+$i!“e(B
e$B$=$3$G@_Dj$7$F$”$l$P$h$N$G$9!#e(B

e$B$“$H$O!”%i%$%V%i%j$K%V%m%C%/$rEO$9$J$j$7$F%i%$%V%i%jCf$G=hM}$9$k$+!"%*%Ve(B
e$B%8%'%/%H$r<u$1<h$C$F$+$i@_Dj$9$k$+$9$l$P!#e(B

e$B$^$?!$e(BUNDEFINED-8BIT e$B$GJV$5$l$?$J$i$P!$e(B
e$BB>$Ne(B encoding e$B$N>l9g$H0c$C$Fe(B Ruby 1.9 e$B$H$7$F$N=hM}$N7k2L$Ne(B
e$BI,A3$H$7$FF@$i$l$?$b$N$G$O$J$$$H$$$&$3$H$,J,$+$j$^$9!%e(B
e$B$=$l$,J,$+$l$P9%$-$J$h$&$KNAM}$9$k$3$H$,$G$-$^$9!%e(B

encoding
e$BHsBP1~$N%i%$%V%i%j$,JV$7$F$-$?;~E@$GI,A3$N7k2LF@$i$l$?$b$N$G$Oe(B
e$B$J$$$3$H$,J,$+$j$^$9!#e(B

UNDEFINED-8BIT e$B$N$h$&$J$b$N$,B8:_$7$J$1$l$P!$e(B
e$B%V%i%C%/%%C%/%9$NLaCM$O$9$Y$FF1$8e(B encoding e$B$G$“$k$He(B
e$B?dDj$9$k$7$+$”$j$^$;$s!%e(B

e$B0J>e$NDL$j$J$N$G!"$3$N2>Dj$,H]Dj$5$l$^$9!#e(B

e$B:#2s$b!V2?$@$+NI$/J,$+$i$J$$$3$H$r46>pE*$KC}$C$F$$$k!W$He(B

e$B;W$o$l$F=*$o$j$+$J$!!%!%!%e(B(^_^;

e$B$$$d!“8@$$$?$$$3$H$O$o$+$k$N$G$9$h!#$^$?!”$*$=$i$/$$s$J$=$&$$$C$?%(%se(B
e$B%3!<%G%#%s%0$,I,MW$J>l9g$,B8:
$9$k2DG=@-$OH]Dj$7$F$$$J$$$H;W$$$^$9!#e(B

e$B$?$@!“K\Ev$KI,MW$+$H$$$&$H!”:#$N$H$3$mI,MW$K8+$($k>lLL$O$I$l$bJL$N$h$j$$e(B
e$B$$2r7h:v$,B8:_$7$F$$$k$h$&$G$9!#$J$N$G!"<B$OI,MW$J$$$N$G$O$J$$$+$H!#e(B

e$BK\Ev$KI,MW$+$N8!F$$N==J,@-$K$D$$$F46>p$H$$$&=$>~$,$D$$$?$N$+$He(B

e$B$?$V$se(B Python e$B$@$He(B undefined encoding
e$B$NDs0F$O$9$s$J$jDL$k!&!&!&$H$$$&$+e(B
e$B<B:]B8:_$9$k$s$G$9$,!“$H$j$”$($:=hM}$7$d$9$$e(B encoding
e$B$r$D$1$F$$$$F!"$oe(B
e$B$+$C$?;~$K$A$c$s$H$7$?J8;zMQe(B encoding e$B$r$D$1$h$&$C$FJ}$,e(B
Ruby e$BE
$+$J$H46e(B
e$B$8$^$9!#e(B

undefined:

e$B!He(BRaise an exception for all conversions.

Can be used as the system encoding if no automatic coercion

between byte and Unicode strings is desired.e$B!Ie(B

http://docs.python.org/lib/standard-encodings.html

e$B@.@%$G$9!#e(B

Yukihiro M. wrote:

|# e$B8D?ME*$K$OJ8;z$r<h$j=P$9$N$Oe(B str[i,1] e$B$G$G$-$k$N$G!"e(B
|# str[i] e$B$O%3!<%I%]%$%s%H$rJV$9$^$^$G$h$+$C$?$H;W$&$s$G$9$1$I$M$’!#e(B

e$B$&!"$=$l$O$=$&$J$N$+$b$7$l$^$;$s!#<jCY$l$G$9$,!#e(B

e$B0lG/0J>eA0$K;W$$$D$$$F$+$i:rF|$^$GK:$l$F$?$s$G$9$h$M!"$3$l!#e(B
e$B$b$&>/$7Aa$/;W$$=P$;$PDs0F$7$?$N$G$9$,!#e(B

|String#[]= Integer e$B$O%Q%C%A=q$$$?$3$H$,$"$j$^$9$,!"$$$^$$$A<u$1$,0-$$$_e(B
|e$B$?$$!#e(BString#bytes[]= e$B$H$+$NJ}8~$K$J$C$F$$$/$N$G$9$+$M$’!#e(B

e$B<u$1$,0-$$$G$9$+!#$^$"!"e(BString#[]e$B$,J8;zNs$rJV$9$s$GHsBP>N$Ke(B
e$B$J$C$F$7$^$$$^$9$+$i$M$(!#e(B

e$B$"!"<u$1$C$F$^$D$b$H$5$s$X$N!J$)e(B
String#[]= Integer e$B$7$?$$$C$FOC$O$A$i$[$i$"$j$^$9$M!#e(B
[ruby-dev:33229] e$B$,7o$N%Q%C%A$G$9!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33284] Re: Binary String”
on Wed, 23 Jan 2008 03:20:30 +0900, “NARUSE, Yui”
[email protected] writes:

|String#[] e$B$NLa$jCM$N%/%i%9$,e(B encoding e$B$K$h$C$FJQ$o$k$N$O$$$+$,$J$b$N$+e(B
|e$B$H!#e(BString e$B$GE}0l$5$l$F$$$kJ}$,$$$$$s$8$c$J$$$+$J$!$H;W$$$^$9!#e(B

e$B;d$b$=$&;W$$$^$9!#e(B

|# e$B8D?ME*$K$OJ8;z$r<h$j=P$9$N$Oe(B str[i,1] e$B$G$G$-$k$N$G!"e(B
|# str[i] e$B$O%3!<%I%]%$%s%H$rJV$9$^$^$G$h$+$C$?$H;W$&$s$G$9$1$I$M$'!#e(B

e$B$&!"$=$l$O$=$&$J$N$+$b$7$l$^$;$s!#<jCY$l$G$9$,!#e(B

|String#[]= Integer e$B$O%Q%C%A=q$$$?$3$H$,$“$j$^$9$,!”$$$^$$$A<u$1$,0-$$$_e(B
|e$B$?$$!#e(BString#bytes[]= e$B$H$+$NJ}8~$K$J$C$F$$$/$N$G$9$+$M$'!#e(B

e$B<u$1$,0-$$$G$9$+!#$^$"!"e(BString#[]e$B$,J8;zNs$rJV$9$s$GHsBP>N$Ke(B
e$B$J$C$F$7$^$$$^$9$+$i$M$(!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33289] Re: Binary String”
on Wed, 23 Jan 2008 10:54:36 +0900, “NARUSE, Yui”
[email protected] writes:

|Yukihiro M. wrote:
|> |# e$B8D?ME*$K$OJ8;z$r<h$j=P$9$N$Oe(B str[i,1] e$B$G$G$-$k$N$G!“e(B
|> |# str[i] e$B$O%3!<%I%]%$%s%H$rJV$9$^$^$G$h$+$C$?$H;W$&$s$G$9$1$I$M$'!#e(B
|>
|> e$B$&!”$=$l$O$=$&$J$N$+$b$7$l$^$;$s!#<jCY$l$G$9$,!#e(B
|
|e$B0lG/0J>eA0$K;W$$$D$$$F$+$i:rF|$^$GK:$l$F$?$s$G$9$h$M!"$3$l!#e(B
|e$B$b$&>/$7Aa$/;W$$=P$;$PDs0F$7$?$N$G$9$,!#e(B

e$B<h$j=P$7$?>pJse(B(e$B%3!<%I%]%$%s%He(B)e$B$,%(%s%3!<%G%#%s%0>pJs$r;}$?$Je(B
e$B$$$N$,5$$K$J$C$FJ8;zNs$rJV$9$h$&$K$7$?$h$&$J5-21$,$"$j$^$9!#e(B

|> e$B<u$1$,0-$$$G$9$+!#$^$“!“e(BString#[]e$B$,J8;zNs$rJV$9$s$GHsBP>N$Ke(B
|> e$B$J$C$F$7$^$$$^$9$+$i$M$(!#e(B
|
|e$B$”!”<u$1$C$F$^$D$b$H$5$s$X$N!J$)e(B

e$B$"$l!"H]DjE*$@$C$?$+$J!#$=$&$+$b!#e(B

|String#[]= Integer e$B$7$?$$$C$FOC$O$A$i$[$i$"$j$^$9$M!#e(B
|[ruby-dev:33229] e$B$,7o$N%Q%C%A$G$9!#e(B

e$B$_$J$5$s$O$I$&;W$$$^$9!)e(B e$B;d$OHsBP>N@-$,5$$K$J$k$N$G!"e(B

  • b=s.bytes; b[1] = b[1]+1
  • s.byte(1)=s.byte(1)+1
  • s.set_byte(1,s.byte(1)+1)

e$B$N$h$&$J$N$,$$$$$+$J$"$H;W$C$F$^$9$,!#e(B

e$B@.@%$G$9!#e(B

Tanaka A. wrote:

e$B$j$^$;$s!#e(B

e$B$?$H$($P!“e(BJIS X 0213 e$B$GF3F~$5$l$?J8;z$K$Oe(B Unicode e$B$Ge(B
combining character e$B$K$;$6$k$r$($J$$J8;ze(B (e$B%”%$%L8l$N$H$+e(B) e$B$,e(B
e$B$"$k$N$G!"$=$&$$$&J8;z$r$I$&$$$&@0?t$K$9$k$+$,LdBj$G$9!#e(B

e$B$^$!!“e(BRuby e$B>e$J$ie(B Bignum e$B$,$D$+$($k$+$iLdBj$J$$$@$m$&!”$H$$e(B
e$B$&9M$($b$"$j$^$9$,!"e(BC e$B%l%Y%k$H$I$&BP1~$5$;$k$+$H$$$&OC$O=P$Fe(B
e$B$-$^$9$J!#e(B

e$B!VJ8;z!W$NDj5A$OMM!9$G$"$k$H$3$m!"e(BUnicode Glossary
e$B$r0z$/$H!"e(B

Character. (1) The smallest component of written language that has
semantic value; refers to the abstract meaning and/or shape, rather than
a specific shape (see also glyph), though in code tables some form of
visual representation is essential for the readere$B!Ge(Bs
understanding. (2)
Synonym for abstract character. (3) The basic unit of encoding for the
Unicode character encoding. (4) The English name for the ideographic
written elements of Chinese origin. [See ideograph (2).]

e$B$H$"$k$N$G$9$,!"!Ve(Bcombining character e$B$re(B
1e$BJ8;z$H$9$k!W$H$$$&$N$Oe(B (2)
abstract character e$B$G$9$h$M!#e(BRuby e$B$,%5%]!<%H$9$k$N$Oe(B (3)
e$B$G$$$$$H;W$$$^$9!#e(B

e$B$D$^$j!“e(B
1-04-87 <304B, 309A> # [HIRAGANA LETTER BIDAKUON NGA]
e$B$N>l9g$J$i!“e(B”\u304B\u309A”[1] => 0x309A e$B$G!#e(B

e$B:#$N$^$^$G$be(B \u309A
e$B$,JV$C$F$-$F$7$^$$$^$9$,!"$=$NJU$O$b$&0l$D>e$N%l%$e(B
e$B%d!<$G2?$H$+$9$kOC$G$7$g$&$M$’!#e(B

e$B$$$d!"e(BEUC-JIS-2004 e$B$r;H$($C$FOC!)!J$)e(B

e$B@.@%$G$9!#e(B

Yukihiro M. wrote:

e$B<h$j=P$7$?>pJse(B(e$B%3!<%I%]%$%s%He(B)e$B$,%(%s%3!<%G%#%s%0>pJs$r;}$?$Je(B
e$B$$$N$,5$$K$J$C$FJ8;zNs$rJV$9$h$&$K$7$?$h$&$J5-21$,$"$j$^$9!#e(B

e$B3N$+$K$=$l$O$4$b$C$H$b!#J8;z%*%V%8%’%/%H$OF3F~$7$F$^$;$s$7$M$'e(B

|String#[]= Integer e$B$7$?$$$C$FOC$O$A$i$[$i$"$j$^$9$M!#e(B
|[ruby-dev:33229] e$B$,7o$N%Q%C%A$G$9!#e(B

e$B$_$J$5$s$O$I$&;W$$$^$9!)e(B e$B;d$OHsBP>N@-$,5$$K$J$k$N$G!"e(B

  • b=s.bytes; b[1] = b[1]+1
  • s.byte(1)=s.byte(1)+1
  • s.set_byte(1,s.byte(1)+1)

e$B$N$h$&$J$N$,$$$$$+$J$"$H;W$C$F$^$9$,!#e(B

String#[]=
e$B$O%+%8%e%"%k$J%a%=%C%I$H$$$&$3$H$G?d$7$F$*$/$o$1$G$9$,!"e(B
e$B%U%)!<%^%k!u;2>HMQ$H$7$F$Oe(B

  • b=s.bytes; b[1] = b[1]+1
    e$B$,9%$_$G$9$+$M$’!#e(B

e$B$=$b$=$be(B enumerator e$B$C$Fe(B enum
e$B$@$1$r;H$C$F$$$^$9$1$l$I!"%i%s%@%%"%/%;%9e(B e$B$J$b$N$O>/$70c$C$?$b$N$rJV$7$F$b$$$$$h$&$J!<!#e(Benumerator e$B$N$&$A$NH>?t$/e(B e$B$i$$$O<B:]$O%i%s%@%%"%/%;%92DG=$G$7$g$&$+$i!"$=$&$$$C$?$b$N$O$_$Je(B
[] e$B$He(B
[]= e$B$rDs6!$7$F$/$l$k$HJXMx$+$b!#e(B

e$B$G$be(B bytes e$B$He(B lines
e$B$,;w$FHs$J$k$b$N$rJV$9$N$O:.Mp$N$b$H$+$J$!!#e(B

In article [email protected],
Yukihiro M. [email protected] writes:

e$B<h$j=P$7$?>pJse(B(e$B%3!<%I%]%$%s%He(B)e$B$,%(%s%3!<%G%#%s%0>pJs$r;}$?$Je(B
e$B$$$N$,5$$K$J$C$FJ8;zNs$rJV$9$h$&$K$7$?$h$&$J5-21$,$"$j$^$9!#e(B

e$B$"$H!"e(Bcombining character e$B$G$9$+$M$'!#e(B

combining character e$B$re(B 1e$BJ8;z$H$9$ke(B encoding
e$B$r$“$-$i$a$k$N$Ge(B
e$B$”$l$P$$$$$N$+$b$7$l$^$;$s$,!“$”$-$i$a$J$$$H$9$l$P4JC1$G$O$"e(B
e$B$j$^$;$s!#e(B

e$B$?$H$($P!“e(BJIS X 0213 e$B$GF3F~$5$l$?J8;z$K$Oe(B Unicode e$B$Ge(B
combining character e$B$K$;$6$k$r$($J$$J8;ze(B (e$B%”%$%L8l$N$H$+e(B)
e$B$,e(B
e$B$“$k$N$G!”$=$&$$$&J8;z$r$I$&$$$&@0?t$K$9$k$+$,LdBj$G$9!#e(B

e$B$^$!!“e(BRuby e$B>e$J$ie(B Bignum
e$B$,$D$+$($k$+$iLdBj$J$$$@$m$&!”$H$$e(B
e$B$&9M$($b$"$j$^$9$,!"e(BC e$B%l%Y%k$H$I$&BP1~$5$;$k$+$H$$$&OC$O=P$Fe(B
e$B$-$^$9$J!#e(B

e$B@.@%$G$9!#e(B

Tanaka A. wrote:

Ruby e$B$O$“$-$i$a$k$s$G$7$g$&$+!”$H$$$&$H$3$m$,LdBj$G$7$g$&$+!#e(B

Ruby 1.9 e$B$de(B 2.0
e$B$G$OD|$a$?J}$,$$$$$s$8$c$J$$$G$9$+!#$=$l$rF~$l$k$N$G$7$?e(B
e$B$i!“$?$H$($P@55,I=8=$G$bF1$8%l%Y%k$NBP1~$,F~$C$F$$$J$$$H%P%i%s%9$,<h$l$Je(B
e$B$$$H;W$$$^$9$,!”$$$`$M<B8=$G$-$F$$$k$H;W$o$l$k%l%Y%ke(B
1e$B$KHf$Y$F!"e(B
1 Basic Unicode Support: Level 1
1.1 Hex notation
1.2 Properties
1.3 Subtraction and Intersection
1.4 Simple Word Boundaries
1.5 Simple Loose Matches
1.6 Line Boundaries
1.7 Code Points

Grapheme Clusters e$B$NF~$C$F$$$ke(B
e$B%l%Y%ke(B2e$B$O$J$s$H$$$&$+%O!<%I%k$,!&!&!&!#e(B
2 Extended Unicode Support: Level 2
2.1 Canonical Equivalents
2.2 Default Grapheme Clusters
2.3 Default Word Boundaries
2.4 Default Loose Matches
2.5 Name Properties
2.6 Wildcard Properties

e$B$D$$$G$K%l%Y%ke(B 3
3 Tailored Support: Level 3
3.1 Tailored Punctuation
3.2 Tailored Grapheme Clusters
3.3 Tailored Word Boundaries
3.4 Tailored Loose Matches
3.5 Tailored Ranges
3.6 Context Matching
3.7 Incremental Matches
3.8 Unicode Set Sharing
3.9 Possible Match Sets
3.10 Folded Matching
3.11 Submatchers

Unicode Technical Standard #18 Unicode Regular Expressions
http://unicode.org/reports/tr18/