Ruby Forum Ruby-dev > TypeError from Encoding.compatible? (r18920)

Posted by Yukihiro Matsumoto (Guest)
on 29.08.2008 18:55
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

r18920$B$G(BEncoding.compatible?$B$,(BTypeError$B$r$"$2$k$h$&$K$J$j$^(B
$B$7$?$,!"$3$l$,0z?t%A%'%C%/$J$7$K(BBUILTIN_TYPE()$B$r;H$C$F$$$k$?(B
$B$a!"(Btest_m17n.rb$B$,Mn$A$^$9!#(B

$B$G$9$,!"$=$b$=$b(Bcompatible?$B$,Nc30$r$"$2$kI,MW$,$"$k$N$G$7$g(B
$B$&$+!#%3%s%Q%A$+$I$&$+%A%'%C%/$7$?$$$@$1$J$N$KNc30$,>e$,$k$N(B
$B$O;H$$$K$/$$5$$,$7$^$9!#:#$^$G$N$h$&$K$=$b$=$b(Bencoding$B$NBP>](B
$B$G$O$J$$;~(Bnil$B!"(Bcompatible$B$G$J$$;~(Bfalse$B!"(Bcompatible$B$J;~(Btrue$B$N(B
$BJ}$,NI$$$h$&$K;W$$$^$9!#(B

$B$N$G!"8D?ME*$K$O(Br18920$B$r%j%P!<%H$7$?$$$N$G$9$,!"$I$&$G$7$g$&!)(B

$B$b$7!"Nc30$r$"$2$k$Y$-$@$H8@$&$N$G$"$l$P!"(BBUILTIN_TYPE()$B$G$O(B
$B$J$/!"(BTYPE()$B$r;H$&$Y$-$G$7$g$&!#(B
Posted by NARUSE, Yui (Guest)
on 30.08.2008 01:21
(Received via mailing list)
$B@.@%$G$9!#(B

Yukihiro Matsumoto wrote:
> $B$^$D$b$H(B $B$f$-$R$m$G$9(B
> 
> r18920$B$G(BEncoding.compatible?$B$,(BTypeError$B$r$"$2$k$h$&$K$J$j$^(B
> $B$7$?$,!"$3$l$,0z?t%A%'%C%/$J$7$K(BBUILTIN_TYPE()$B$r;H$C$F$$$k$?(B
> $B$a!"(Btest_m17n.rb$B$,Mn$A$^$9!#(B

> $B$b$7!"Nc30$r$"$2$k$Y$-$@$H8@$&$N$G$"$l$P!"(BBUILTIN_TYPE()$B$G$O(B
> $B$J$/!"(BTYPE()$B$r;H$&$Y$-$G$7$g$&!#(B

$B$3$N(B 2 $B$D$O$H$j$"$($:=$@5$7$^$7$?!#(B

> $B:#$^$G$N$h$&$K$=$b$=$b(Bencoding$B$NBP>](B
> $B$G$O$J$$;~(Bnil$B!"(Bcompatible$B$G$J$$;~(Bfalse$B!"(Bcompatible$B$J;~(Btrue$B$N(B
> $BJ}$,NI$$$h$&$K;W$$$^$9!#(B

$B$=$N$h$&$J;EMM$O=i<*$G$9!#(B

 * call-seq:
 *   Encoding.compatible?(str1, str2) => enc or nil
 *
 * Checks the compatibility of two strings.
 * If they are compatible, means concatenatable,
 * returns an encoding which the concatinated string will be.
 * If they are not compatible, nil is returned.
encoding.c $B$N(B rdoc $B$h$j(B

r18920 $B0JA0$G$O0J2<$NDL$j$G$7$?!#(B
* encoding$B$NBP>]$G$O$J$$;~(B nil
* compatible $B$G$J$$;~$b(B nil
* compatible $B$J;~$O$I$3$K$*$$$F(B compatible $B$+$K1~$8$F(B enc
  # Encoding.compatible?("\u3042", "hoge") #=> Encoding::UTF_8
  # $BEy$N7k2L$,M_$7$$$N$G(B enc $B$G$"$kI,MW$,$"$k(B
  # $B8@$$49$($l$P!"(B2 $B$D$N(B str $B$r7k9g$7$?;~$N(B encoding 
$B$,JV$k(B

$B$=$7$F!"(Br18920 $B$G!"(B
* encoding$B$NBP>]$G$O$J$$;~(B TypeError
* compatible $B$G$J$$;~$b(B nil
* compatible $B$J;~$O(B enc

> $B$G$9$,!"$=$b$=$b(Bcompatible?$B$,Nc30$r$"$2$kI,MW$,$"$k$N$G$7$g(B
> $B$&$+!#%3%s%Q%A$+$I$&$+%A%'%C%/$7$?$$$@$1$J$N$KNc30$,>e$,$k$N(B
> $B$O;H$$$K$/$$5$$,$7$^$9!#(B

$B$b$H$b$H!"(BEncoding.compatible? $B$N0z?t$K(B encoding 
$B$rM?$($k$H(B
$B4|BT$7$?$H$*$j$KF0:n$7$J$$$H$$$&$N$,$"$j$^$7$F!"(B
> Encoding.compatible?(Encoding::UTF_8, Encoding::US_ASCII)
=> #<Encoding:ASCII-8BIT>
# rb_enc_get_index() $B$O(B encoding $B$rBP>]$H$7$J$$$?$a(B

$B$3$N$h$&$J8m2r$r>7$/F0:n$r$9$k$h$j$O!"(B
$B7i$/Nc30$r=P$7$F$/$l$?J}$,$$$$$H9M$($^$7$?!#(B
# Encoding.compatible? $B$,(B encoding $B$r<h$l$k$h$&$K$9$k$Y$-!"(B
# $B$H$$$&0F$K$D$$$F$O8=:_;W0FCf(B


$B$^$D$b$H$5$s$N6D$k;EMM$J$i$P0l4S@-$,$"$k$N$G$h$$$H;W$&$N$G$9$,!"(B
$B8=9T$N;EMM$G$O(B compatible $B$J;~$K(B enc $B$rJV$90J>e!"(B
false $B$H(B nil 
$B$G6hJL$H$$$&J}K!$,;H$$$E$i$$$N$,%M%C%/$G$7$g$&$+!#(B
enc / false / nil $B$G$b$$$$$N$+$J$!!&!&!&!#(B

r18920 $B$N0U?^$O(B Encoding.compatible? 
$B$,BP1~$7$F$$$k%*%V%8%'%/%H$H!"(B
$BBP1~$7$F$$$J$$%*%V%8%'%/%H$r$O$C$-$j$o$1$k$3$H$@$C$?$N$G!"(B
$BNc30$r=P$9$3$H$K$3$@$o$j$O$J$$$N$G$9$,!&!&!&!#(B
Posted by Yukihiro Matsumoto (Guest)
on 30.08.2008 08:17
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message "Re: [ruby-dev:36049] Re: TypeError from Encoding.compatible? 
(r18920)"
    on Sat, 30 Aug 2008 08:16:21 +0900, "NARUSE, Yui" 
<naruse@airemix.jp> writes:

|> $B:#$^$G$N$h$&$K$=$b$=$b(Bencoding$B$NBP>](B
|> $B$G$O$J$$;~(Bnil$B!"(Bcompatible$B$G$J$$;~(Bfalse$B!"(Bcompatible$B$J;~(Btrue$B$N(B
|> $BJ}$,NI$$$h$&$K;W$$$^$9!#(B
|
|$B$=$N$h$&$J;EMM$O=i<*$G$9!#(B

$B$9$$$^$;$s!#(Bencoding$B$rJV$9$3$H$r<:G0$7$F$^$7$?!#(B

|> $B$G$9$,!"$=$b$=$b(Bcompatible?$B$,Nc30$r$"$2$kI,MW$,$"$k$N$G$7$g(B
|> $B$&$+!#%3%s%Q%A$+$I$&$+%A%'%C%/$7$?$$$@$1$J$N$KNc30$,>e$,$k$N(B
|> $B$O;H$$$K$/$$5$$,$7$^$9!#(B
|
|$B$b$H$b$H!"(BEncoding.compatible? $B$N0z?t$K(B encoding $B$rM?$($k$H(B
|$B4|BT$7$?$H$*$j$KF0:n$7$J$$$H$$$&$N$,$"$j$^$7$F!"(B
|> Encoding.compatible?(Encoding::UTF_8, Encoding::US_ASCII)
|=> #<Encoding:ASCII-8BIT>
|# rb_enc_get_index() $B$O(B encoding $B$rBP>]$H$7$J$$$?$a(B
|
|$B$3$N$h$&$J8m2r$r>7$/F0:n$r$9$k$h$j$O!"(B
|$B7i$/Nc30$r=P$7$F$/$l$?J}$,$$$$$H9M$($^$7$?!#(B
|# Encoding.compatible? $B$,(B encoding $B$r<h$l$k$h$&$K$9$k$Y$-!"(B
|# $B$H$$$&0F$K$D$$$F$O8=:_;W0FCf(B

$B$C$F$$$&$+!"$=$N!V;W0F!W$,=*$o$C$F$+$iJQ99$7$F$b$h$+$C$?$s$8$c(B
$B$J$$$s$G$9$+$M!#(B

|$B$^$D$b$H$5$s$N6D$k;EMM$J$i$P0l4S@-$,$"$k$N$G$h$$$H;W$&$N$G$9$,!"(B
|$B8=9T$N;EMM$G$O(B compatible $B$J;~$K(B enc $B$rJV$90J>e!"(B
|false $B$H(B nil $B$G6hJL$H$$$&J}K!$,;H$$$E$i$$$N$,%M%C%/$G$7$g$&$+!#(B
|enc / false / nil $B$G$b$$$$$N$+$J$!!&!&!&!#(B

$B$d$C$Q$j(B enc / false / nil $B$O$*$+$7$$5$$,$7$^$9$M!#$&!<$s!#(B
true / false / nil $B$K$7$F!":G>/8xG\?t$J%(%s%3!<%G%#%s%0$r5a(B
$B$a$k%a%=%C%I$OJL$K;}$D$H$+(B...$B!#(B

|r18920 $B$N0U?^$O(B Encoding.compatible? $B$,BP1~$7$F$$$k%*%V%8%'%/%H$H!"(B
|$BBP1~$7$F$$$J$$%*%V%8%'%/%H$r$O$C$-$j$o$1$k$3$H$@$C$?$N$G!"(B
|$BNc30$r=P$9$3$H$K$3$@$o$j$O$J$$$N$G$9$,!&!&!&!#(B

Encoding.compatible?$B$,$J$K$r$H$k$+$rL@3N$K$9$kI,MW$,$"$k$H;W(B
$B$$$^$9!#(B

$B$?$H$($P>-Mh(BIO$B$H$+(BStringIO$B$H$+!VJ8;zNs$N$h$&$K?6$kIq$&$J$K$+!W(B
$B$r0z?t$K$H$k$h$&$J2DG=@-$r9M$($k$H!":#$N$h$&$J%A%'%C%/(B($BJ8;zNs(B
$B$+@55,I=8=$N$_(B)$B$O$"$^$jNI$/$J$$$h$&$J5$$,$7$^$9!#(B

                                $B$^$D$b$H(B $B$f$-$R$m(B /:|)
Posted by NARUSE, Yui (Guest)
on 30.08.2008 10:26
(Received via mailing list)
$B@.@%$G$9!#(B

Yukihiro Matsumoto wrote:
> |$B$3$N$h$&$J8m2r$r>7$/F0:n$r$9$k$h$j$O!"(B
> |$B7i$/Nc30$r=P$7$F$/$l$?J}$,$$$$$H9M$($^$7$?!#(B
> |# Encoding.compatible? $B$,(B encoding $B$r<h$l$k$h$&$K$9$k$Y$-!"(B
> |# $B$H$$$&0F$K$D$$$F$O8=:_;W0FCf(B
> 
> $B$C$F$$$&$+!"$=$N!V;W0F!W$,=*$o$C$F$+$iJQ99$7$F$b$h$+$C$?$s$8$c(B
> $B$J$$$s$G$9$+$M!#(B

1.9.1 $B;EMM$N(B fix 
$B$,Gw$C$F$-$?$N$G!"$H$j$"$($::#$N$^$^$8$c$^$:$$$@$m$&$H!#(B
$B$"$H!"(Bencoding $B$N>l9g$O$=$N(B encoding 
$B$,2?$r0U?^$7$F$$$k$N$+Fq$7$$$N$G!#(B

> |$B$^$D$b$H$5$s$N6D$k;EMM$J$i$P0l4S@-$,$"$k$N$G$h$$$H;W$&$N$G$9$,!"(B
> |$B8=9T$N;EMM$G$O(B compatible $B$J;~$K(B enc $B$rJV$90J>e!"(B
> |false $B$H(B nil $B$G6hJL$H$$$&J}K!$,;H$$$E$i$$$N$,%M%C%/$G$7$g$&$+!#(B
> |enc / false / nil $B$G$b$$$$$N$+$J$!!&!&!&!#(B
> 
> $B$d$C$Q$j(B enc / false / nil $B$O$*$+$7$$5$$,$7$^$9$M!#$&!<$s!#(B
> true / false / nil $B$K$7$F!":G>/8xG\?t$J%(%s%3!<%G%#%s%0$r5a(B
> $B$a$k%a%=%C%I$OJL$K;}$D$H$+(B...$B!#(B

Encoding.compatible? $B$O(B enc / nil $B$K$7$F!"(B

C $B%l%Y%k$G8@$&(B enc_capable 
$BE*$J$b$N$rMQ0U$9$k$N$b$"$j$+$b!"$H$+$O!#(B
$B$3$N>l9g(B obj#encoding $B$NM-L5$GH=CG$H$+$K$J$k$s$G$7$g$&$,!"(B
$B0lJ}$G(B IO#encoding $B$O$J$+$C$?$j$9$k$o$1$G$9!#(B

> |r18920 $B$N0U?^$O(B Encoding.compatible? $B$,BP1~$7$F$$$k%*%V%8%'%/%H$H!"(B
> |$BBP1~$7$F$$$J$$%*%V%8%'%/%H$r$O$C$-$j$o$1$k$3$H$@$C$?$N$G!"(B
> |$BNc30$r=P$9$3$H$K$3$@$o$j$O$J$$$N$G$9$,!&!&!&!#(B
> 
> Encoding.compatible?$B$,$J$K$r$H$k$+$rL@3N$K$9$kI,MW$,$"$k$H;W(B
> $B$$$^$9!#(B
>
> $B$?$H$($P>-Mh(BIO$B$H$+(BStringIO$B$H$+!VJ8;zNs$N$h$&$K?6$kIq$&$J$K$+!W(B
> $B$r0z?t$K$H$k$h$&$J2DG=@-$r9M$($k$H!":#$N$h$&$J%A%'%C%/(B($BJ8;zNs(B
> $B$+@55,I=8=$N$_(B)$B$O$"$^$jNI$/$J$$$h$&$J5$$,$7$^$9!#(B

IO $B7O$N$3$H$O9M$($?$s$G$9$,!":#$N(B Encoding.compatible? $B$H$O(B
$B$=$0$o$J$$$h$&$K46$8$^$7$?!#(B

$B$=$b$=$b!"(BIO $B$OF~NO$H=PNO$GOC$,0c$&$o$1$G!"(B
$B$?$H$($P!"!V(BUS-ASCII $B$N(B IO $B=PNO!W$H!V(BUTF-8 
$B$NJ8;zNs!W$O!_$G$9!#(B
$B$7$+$7!"!V(BUS-ASCII $B$N(B IO $BF~NO!W$H!V(BUTF-8 
$B$NJ8;zNs!W$O!{$G!"(B
encoding $B$rJV$9$J$i$P(B UTF-8 $B$G$7$g$&!#(B

$B$^$?!"(BEncoding.compatible? $B$OCf?H$N(B ASCII ONLY 
$B$^$G8+$k$o$1$G$9$,!"(B
$B$3$l$r(B IO $B$KE,MQ$9$k$3$H$O:$Fq$G$9!#(B

$B$D$^$j!"(BIO $B$r2>$K0z?t$H$9$k>l9g!"(B
$B$=$N(B encoding $B$r;}$A(B CODERANGE_VALID $B$J(B string 
$B$H$_$J$9!"(B
$B$H$$$&$3$H$K$J$k$+$H;W$&$N$G$9$,!"2L$?$7$F$3$l$,!"(B
Encoding.compatible?(io, str) $B$H=q$$$?>l9g$N4|BTDL$j$+$H$$$&$H!"(B
$B$J$+$J$+$"$d$7$$=j$J$s$8$c$J$$$+$J$!$H!#(B

encoding $B$N>l9g$bF1MM$G!"$=$N(B encoding $B$,$I$3$N(B encoding 
$B$+$K$h$C$F!"(B
"compatible" $B$N0UL#$,JQ$o$C$F$-$^$9!#(B

$B0lJ}$G!"(Bregexp 
$B$K4X$7$F$OJ8;zNs$HMm$`ItJ,$,%^%C%A$N$_$J$N$G!"(B
$B$b$&0lJ}$N$J$K$+$N(B encoding $B$rJ8;zNs$N(B encoding 
$B$H$_$J$7!"(B
$BEv3:(B regexp 
$B$N%^%C%A2DG=$+$GH=CG$9$k$H$$$&$3$H$G7h$a$i$l$^$7$?!#(B

$B$H$$$&6q9g$KOC$O$J$+$J$+Fq$7$$$o$1$G$9!#(B
Posted by NARUSE, Yui (Guest)
on 15.09.2008 19:49
(Received via mailing list)
$B@.@%$G$9!#(B

r19357 $B$G0J2<$NDL$jJQ99$7$^$7$?$,!"$$$+$,$G$7$g$&$+!#(B

* $B$I$A$i$+$,(B encoding $B$r;}$?$J$$(B
-> nil
# encoding $B$r;}$D$+$I$&$+$NH=CG$O3F<+(B encoding 
$B%a%=%C%I$NM-L5Ey$GH=CG$7$F$[$7$$(B

* compatible $B$G$J$$(B
-> nil

* compatible $B$J>l9g(B
-> String $B$H(B Regexp $B$O8=>uDL$j(B
-> Encoding $B$rDI2C!"F0:n$O(B Regexp $B$HF1MM(B
-> IO $B$rDI2C!"(Binternal_encoding $B$+!"(Bnil $B$J$i$P(B 
external_encoding $B$r8+$FH=CG(B

$B;29M(B: [ruby-core:18595]

$B<BAu$7$F$$$F;W$C$?$N$G$9$,!"(B

IO#encoding:
  internal_encoding $B$,(B Encoding $B$rJV$;$P$=$l$r!"(B
  nil $B$@$C$?$i(B external_encoding $B$rJV$9!#(B
$B$H$$$&$N$,$"$C$F$bNI$5$=$&$J5$$,$7$^$9$M(B