[Ruby 1.9-Bug#3990][Assigned] tests of rexml/rss reports many errors and failures without iconv

(2010/11/06 12:10), Kouhei S. wrote:

3. 

$BEv=i$N(B1.$B$NM}M3$O(B2.$B$G$O$J$/(BREXML$B$N(BAPI$B$N8_49@-$r<:$o$;$k(B

   $B$Y$-$G$O$J$$!"$@$C$?$,!":#$O$=$NM}M3$O$J$/$J$j!"(B2.$B$@$1(B
   $B$K$J$C$F$$$k!#(B

$B$3$3$OB>$N?M$K$b$o$+$j$K$/$$$H;XE&$5$l$?$N$G$9$,(B
$BEv=i$+$i(B 2. $B$H(B API $B8_49@-$NN>J}$,M}M3$G$9!#(B

$B$J$s$H!"$=$&$@$C$?$N$G$9$+!#(B

$B0l1~0lHV:G=i$NEj9F$+$i;XE&$O$7$F$$$^$9$h$M!#(B
$B8+D>$9$H3N$+$K$o$+$j$E$i$$$H$O;W$&$N$G!“H?>J$9$k$H$3$m$G$O$”$j$^$9!#(B

$B$J$<8_49@-$r5s$2$?$+$H$$$&$H!"(BXMLDecl#encoding $B$r!"(B
XML $B@k8@MQ$H(B transcode $BMQ$N$I$A$i$N0UL#$K$9$k$+$r9M$($k:]!"(B
$B8_49@-E*$K$O(B XML $B@k8@MQ$@$HM}2r$9$k$Y$-$@$+$i$G$9!#(B

transcode $BMQ$G$O;XDj<+BN$r(B CP932 $B$H$+$KJQ$($J$$$H$$$1$J$$(B

$B$H$$$&$+(B iconv $B$N;~$G$b(B Shift_JIS $B$r;H$&$HGH%@%C%7%e$H$+$G$O$^$k(B

$B$G$O!"(B2.$B$r2r7h$9$kJ}K!!J(BXML$B@k8@MQ$H(Btranscode$BMQ$N(Bencoding$B$rJL(B
$B$K4IM}$9$kJ}K!!K$r$$$/$D$+9M$($F!"$=$NCf$G0lHV$h$5$=$&$J$b$N(B
$B$K$D$$$F$=$l$,BEEv$+$r$"$i$?$a$F9M$($k!"$H$$$&N.$l$G$$$$$G$9(B
$B$+!)(B

$B$o$+$j$^$7$?!"8e$[$I$H%Q%C%A$rEj$2$^$9!#(B

$B$"$H!“0l1~3NG’$7$?$$$N$G$9$,!”;d$,%a%s%F%J%s%9$9$k$3$H$K$J$C(B
$B$?$N$G!"(BREXML$B$NJQ99$K$D$$$F$O;d$NH=CG$,:GM%@h$G$$$$$s$G$9$h(B
$B$M!);d$NH=CG$,$h$/$J$5$=$&$J>l9g$O!";d$,G<F@$G$-$k$h$&$K@bL@(B
$B$7$F$b$i$C$F!"$=$l$G;d$,G<F@$7$?$iJQ99$9$k!"$H$$$&$3$H$G$$$$(B
$B$s$G$9$h$M!)(B

$B$O$$!"@bF@$G$-$J$+$C$?$i$o$?$7$N@bL@$,0-$$!"$H!#(B

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:42548] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Sun, 7 Nov 2010
19:14:39 +0900,
“NARUSE, Yui” [email protected] wrote:

$B$o$+$j$^$7$?!"8e$[$I$H%Q%C%A$rEj$2$^$9!#(B

$B$“$j$,$H$&$4$6$$$^$9!#(B
$B;d$b;W$&$H$3$m$O$”$k$N$G0F$r=P$9$D$b$j$G$9!#(B
$B$?$@!“>/$J$/$H$bG/Kv$^$G$o$j$H$d$k$3$H$,$”$k$N$G!"$=$s$J$KH?(B
$B1~$O$h$/$J$$$H;W$$$^$9!#$9$_$^$;$s!#(B

$B$“$H!“0l1~3NG’$7$?$$$N$G$9$,!”;d$,%a%s%F%J%s%9$9$k$3$H$K$J$C(B
$B$?$N$G!”(BREXML$B$NJQ99$K$D$$$F$O;d$NH=CG$,:GM%@h$G$$$$$s$G$9$h(B
$B$M!);d$NH=CG$,$h$/$J$5$=$&$J>l9g$O!“;d$,G<F@$G$-$k$h$&$K@bL@(B
$B$7$F$b$i$C$F!”$=$l$G;d$,G<F@$7$?$iJQ99$9$k!"$H$$$&$3$H$G$$$$(B
$B$s$G$9$h$M!)(B

$B$O$$!“@bF@$G$-$J$+$C$?$i$o$?$7$N@bL@$,0-$$!”$H!#(B

$B$G$-$k$@$1!“$3$3$,$3$&$o$+$i$J$$!”$H$+$OEA$($k$D$b$j$J$N$G$h(B
$B$m$7$/$*4j$$$7$^$9!#(B

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

(2010/11/07 20:10), Kouhei S. wrote:

$B$G$O!"(B2.$B$r2r7h$9$kJ}K!!J(BXML$B@k8@MQ$H(Btranscode$BMQ$N(Bencoding$B$rJL(B

$B$K4IM}$9$kJ}K!!K$r$$$/$D$+9M$($F!“$=$NCf$G0lHV$h$5$=$&$J$b$N(B
$B$K$D$$$F$=$l$,BEEv$+$r$”$i$?$a$F9M$($k!"$H$$$&N.$l$G$$$$$G$9(B
$B$+!)(B

$B$o$+$j$^$7$?!"8e$[$I$H%Q%C%A$rEj$2$^$9!#(B

$B$“$j$,$H$&$4$6$$$^$9!#(B
$B;d$b;W$&$H$3$m$O$”$k$N$G0F$r=P$9$D$b$j$G$9!#(B
$B$?$@!“>/$J$/$H$bG/Kv$^$G$o$j$H$d$k$3$H$,$”$k$N$G!"$=$s$J$KH?(B
$B1~$O$h$/$J$$$H;W$$$^$9!#$9$_$^$;$s!#(B

$B%Q%C%A$r:n$C$F$_$^$7$?!#(B
https://github.com/nurse/ruby/compare/trunk...rexml

83a66d67 $B$,(B encoding $B$r(B String
$B$KLa$9$b$N$N$&$A!“<gMW$J$b$N!#(B
8d20327b $B$,(B 83a66d67
$B$K4^$^$l$k$Y$-JQ99$N$&$A!”<gMW$G$J$$$b$N$r!"(B
$B$o$+$j$d$9$5$N$?$a:#2sJL$K$7$F$$$^$9(B
2de823bd $B$,(B warning $B>C$7(B
14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$3$l$K$h$C$FNc$($P0J2<$N$h$&$J0c$$$,=P$^$9!#(B

% cat test.rb
require ‘rexml/document’
src = <<end

<?xml version="1.0" ?>

\u3042\uFF5E
end
x = REXML::Document.new(src)

o = REXML::Output.new(s=“”, “EUC-JP”, “CP51932”)
x.write(o)
p s

o = REXML::Output.new(s=“”, “EUC-JP”)
x.write(o)
% ./ruby test.rb
“<?xml version='1.0' encoding='EUC-JP'?>\n\x{A4A2}\x{A1C1}\n”
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/encoding.rb:34:in encode': U+FF5E from UTF-8 to EUC-JP (Encoding::UndefinedConversionError) from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/encoding.rb:34:in encode’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/output.rb:22:in <<' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:87:in write_text’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:50:in
write' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:79:in block in write_element’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:78:in
each' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:78:in write_element’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:31:in
write' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:60:in block in write_document’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:60:in
each' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:60:in write_document’
from
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/formatters/default.rb:28:in
write' from /home/naruse/local/ruby/lib/ruby/1.9.1/rexml/document.rb:199:in write’
from test.rb:13:in `’

REXML::Document#write $B$G$b(B transcode encoding
$B$r;XDj$G$-$?J}$,$$$$$+$J$!(B
$B$H$b;W$C$F$$$k$N$G$9$,!“$H$j$”$($:J}8~$H$7$F$O$3$s$J46$8$G$9!#(B

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

(2010/11/18 22:46), Kouhei S. wrote:

$B$?!#!J(BXML$B@k8@$N%(%s%3!<%G%#%s%0$rHf3S$7$F$$$k$H$3$m$,J,;6$7(B
$B$F$$$F$$$m$s$J$H$3$m$G(Bupcase$B$,$G$F$/$k$N$,7y$@$C$?!#!K(B
$B<B:]$K%3!<%I$r=q$-=P$7$?$i$^$?9M$($,JQ$o$k$+$b$7$l$^$;$s(B
$B$,!#!#!#(B

$BHf3SBP>]$OA4$F(B UTF-8 $B$J$N$G!“(BREXML::Encoding $B%b%8%e!<%k$K(B
decode $B:Q$_(B or UTF-8
$B$+H]$+!”$r<($9%$%s%9%?%s%9JQ?t$rDI2C$H$$$&$N$O9M$($^$7$?!#(B

83a66d67 $B$,(B encoding $B$r(B String $B$KLa$9$b$N$N$&$A!“<gMW$J$b$N!#(B
8d20327b $B$,(B 83a66d67 $B$K4^$^$l$k$Y$-JQ99$N$&$A!”<gMW$G$J$$$b$N$r!"(B
$B$o$+$j$d$9$5$N$?$a:#2sJL$K$7$F$$$^$9(B
2de823bd $B$,(B warning $B>C$7(B
14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$(!<$C$H!"(Bwarning$B>C$7$H$+$O:.$<$J$$$GM_$7$+$C$?$G$9!#(B

git $B$G$OJL$N%3%%C%H$K$7$F$“$k$N$G!”!V(BShowing 4 commits by 1
author.$B!W(B
$B$N2<$K=P$F$$$k(B4$B$D$N%3%
%C%H$N%j%s%/$rA*Br$9$l$P!“Nc$($P(B

$B$J$I$H8DJL$N:9J,$r8+$l$^$9$h!#(B
$B$^$?!”(Bwarning$B$@$1JL$K$7$?(B plain $B$J(B diff
$B$b=P$;$^$9$,!]!"$$$i$J$$$+$J(B

end

$B$H$$$&$3$H$G!"%(%C%;%s%9$@$1;29M$K$7$F=q$-D>$7$F$*$-$^$9$M!#(B

$B3N$+$K!#(B
$B$3$3$O$h$m$7$/$G$9!#(B

$B$“!”$=$&$$$($P!“(Bdecode$B$N$H$3$m$GI,$:(BBOM$B$r%A%'%C%/$9$k$h$&$K(B
$B$7$F$$$^$9$,!”$3$l$OI,MW$J$s$G$7$g$&$+!)(BBOM$B$O%U%!%$%k$N@hF,(B
$B$G$@$1%A%'%C%/$9$l$P$$$$$N$@$H;W$C$F$$$^$7$?!#(B

$B$`!"3N$+$K$4;XE&$NDL$j8m$C$F$$$^$9$M!#(B

$B$3$l$K$h$C$FNc$($P0J2<$N$h$&$J0c$$$,=P$^$9!#(B

$B$3$l$O2?$K$h$k0c$$$G$9$+!)(B

14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$NOC$G$7$g$&$+!)(B

$B$*$C$H!“$^$?@bL@$,ITB-$7$F$$$^$9$M!”$=$&$G$9!#(B

REXML::Document#write $B$G$b(B transcode encoding
$B$r;XDj$G$-$?J}$,$$$$$+$J$!(B
$B$H$b;W$C$F$$$k$N$G$9$,!“$H$j$”$($:J}8~$H$7$F$O$3$s$J46$8$G$9!#(B

$B$3$N5!G=$O;d$O$$$i$J$$$H;W$C$F$$$^$9!#(B
$B=PNO;~$K;XDj$9$k$N$G$O$J$/!"(BXML$B@k8@$r=q$-49$($FJQ99$9$k(BAPI$B$N(B
$BJ}$,$h$$$H;W$C$F$$$^$9!#!J$J$N$G:#$N$^$^$G$h$$!#!K(B

XML
$B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0$H!“JQ49$GMQ$$$k%(%s%3!<%G%#%s%0$rJL$K(B
$B$7$?$$%1!<%9$,$”$k$N$G$9$h!#(B
$BBeI=Nc$,(B Windows-31J $B$H(B Shift_JIS$B!"(BCP51932 $B$H(B EUC-JP
$B$G$9!#(B

$B?\F#$G$9!#(B

In [email protected]
“[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” [email protected] wrote:

$BHf3SBP>]$OA4$F(B UTF-8 $B$J$N$G!“(BREXML::Encoding $B%b%8%e!<%k$K(B
decode $B:Q$_(B or UTF-8
$B$+H]$+!”$r<($9%$%s%9%?%s%9JQ?t$rDI2C$H$$$&$N$O9M$($^$7$?!#(B

$BFbIt$G$O$=$l$G$b$h$$$H;W$$$^$9$,!"MxMQ<T$,(BXML$B@k8@$N%(%s%3!<(B
$B%G%#%s%0$r;H$$$?$$$H$-$KITJX$@$H;W$C$F$$$^$9!#Nc$($P!“F|K\8l$C(B
$B$]$$$b$N$@$107$$;~$K%(%s%3!<%G%#%s%0$,(BShift_JIS$B$+(BEUC-JP$B$+(B
UTF-8$B0J30$N$b$N$O;H$o$J$$$H$+!”$H$$$&%1!<%9$r9M$($F$$$^$7$?!#(B
$B$3$N$H$-!"MxMQ<T$,$$$A$$$A(BREXML$B$+$iJV$5$l$k%(%s%3!<%G%#%s%0(B
$B$r@55,2=$7$FHf3S$7$J$1$l$P$$$1$J$$$N$OLLE]$@$H9M$($F$$$^$9!#(B

$B$(!<$C$H!"(Bwarning$B>C$7$H$+$O:.$<$J$$$GM_$7$+$C$?$G$9!#(B

git $B$G$OJL$N%3%%C%H$K$7$F$“$k$N$G!”!V(BShowing 4 commits by 1 author.$B!W(B
$B$N2<$K=P$F$$$k(B4$B$D$N%3%
%C%H$N%j%s%/$rA*Br$9$l$P!“Nc$($P(B
* lib/rexml/encoding.rb (REXML::Encoding#to_transcode_encname): · nurse/ruby@83a66d6 · GitHub
$B$J$I$H8DJL$N:9J,$r8+$l$^$9$h!#(B
$B$^$?!”(Bwarning$B$@$1JL$K$7$?(B plain $B$J(B diff
$B$b=P$;$^$9$,!]!"$$$i$J$$$+$J(B

$B$“!”$=$&$$$&$3$H$G$O$J$/!“%(%s%3!<%G%#%s%0$^$o$j$N$3$H$OJL%H(B
$B%T%C%/$H$7$F07$C$F$/$l$?J}$,BP1~$7$d$9$+$C$?$H$$$&$3$H$G$9!#(B
1$B$D$N%Q%C%A$r:NMQ$9$k$+$I$&$+H=CG$9$k$N$r(B4$B2s$d$k$N$H!”(B4$B$D$"(B
$B$k%Q%C%A$+$i$I$N%Q%C%A$@$1$r:NMQ$9$k$+$rH=CG$9$k$N$@$H!"A0<T(B
$B$NJ}$,3Z$@$H;W$C$F$$$^$9!#ESCf$^$G=hM}$9$k!J(B2$B$D$a$N%Q%C%A$^(B
$B$G$OH=CG$7$?!K$H$+$,$d$j$d$9$$$N$G!#(B

$B$3$l$K$h$C$FNc$($P0J2<$N$h$&$J0c$$$,=P$^$9!#(B

$B$3$l$O2?$K$h$k0c$$$G$9$+!)(B

14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$NOC$G$7$g$&$+!)(B

$B$*$C$H!“$^$?@bL@$,ITB-$7$F$$$^$9$M!”$=$&$G$9!#(B

$B$o$+$j$^$7$?!#(B
$B$"$j$,$H$&$4$6$$$^$9!#(B

XML $B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0$H!“JQ49$GMQ$$$k%(%s%3!<%G%#%s%0$rJL$K(B
$B$7$?$$%1!<%9$,$”$k$N$G$9$h!#(B
$BBeI=Nc$,(B Windows-31J $B$H(B Shift_JIS$B!"(BCP51932 $B$H(B EUC-JP $B$G$9!#(B

$B;d$O!“(BWindows-31J$B$H(BShift_JIS$B$,0c$&$H$+$O$o$+$k$N$G$9$,!”",$N(B
$B$3$H$r$7$?$$%1!<%9$,$I$&$$$&>l9g$+$,$o$+$C$F$$$^$;$s!#(B

$B$^$?!“(BXML$B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0$HJQ49$GMQ$$$k%(%s%3!<%G%#(B
$B%s%0$OF1$8$b$N$K$9$k$Y$-$@$H;W$C$F$$$^$9!#$=$&$7$J$$$H!”(B
REXML$B$,=PNO$7$?(BXML$B$r%Q!<%9$9$kB>$N(BXML$B%Q!<%5$,:$$k$H;W$C$F$$$^(B
$B$9!#(BXML$B@k8@$N%(%s%3!<%G%#%s%0$,(BShift_JIS$B$J$N$K(BXML$B$NCf$K(B
Shift_JIS$B$K$O$J$$J8;z$,F~$C$F$7$^$&$+$b$7$l$J$$$H$$$&$3$H$G$9(B
$B$h$M!)(B

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

(2010/11/20 11:36), Kouhei S. wrote:

$B$]$$$b$N$@$107$$;~$K%(%s%3!<%G%#%s%0$,(BShift_JIS$B$+(BEUC-JP$B$+(B
UTF-8$B0J30$N$b$N$O;H$o$J$$$H$+!"$H$$$&%1!<%9$r9M$($F$$$^$7$?!#(B
$B$3$N$H$-!"MxMQ<T$,$$$A$$$A(BREXML$B$+$iJV$5$l$k%(%s%3!<%G%#%s%0(B
$B$r@55,2=$7$FHf3S$7$J$1$l$P$$$1$J$$$N$OLLE]$@$H9M$($F$$$^$9!#(B

$B$=$&$$$&MW5a$,=P$F$/$k$3$H$^$G$OA[A|$G$-$^$9$,!"!VF|K\8l$C$]$$$b$N$@$107$$;~!W(B
$B$K$O!"8=>u(B UTF-8, Shift_JIS, Windows-31J, EUC-JP, CP51932, eucJP-ms
$B$r(B
$B8+$J$$$H$$$1$J$$$s$G$9$h$M!#(B

$B8=<BE*$K$O%(%s%3!<%G%#%s%0$GH=Dj$9$k$h$j$b!“$=$N%K!<%:$N>l9g!”(B
XML $BA4BN$,(B CP932
$B$KJQ49$G$-$k$+$GH=Dj$7$?J}$,%Y%?!<$@$H;W$$$^$9!#(B

$B$^$?!“@8$NJ8;zNs$+$i(B encoding object $B$K$9$k$N$O(B
Encoding.find(str)
$B$@$1$G$$$1$^$9$,!”(BEncoding
$B%*%V%8%'%/%H$K$J$C$F$7$^$&$H$b$&La$;$J$$!"(B
$B$H$$$&$N$H!“8e=R$NM}M3$G(B IANA $B$N(B canonical name
$B0J30$r;XDj$7$?$$>l9g$b(B
$B$”$C$?$j$7$F!#(B

$B$“!”$=$&$$$&$3$H$G$O$J$/!"%(%s%3!<%G%#%s%0$^$o$j$N$3$H$OJL%H(B
$B%T%C%/$H$7$F07$C$F$/$l$?J}$,BP1~$7$d$9$+$C$?$H$$$&$3$H$G$9!#(B

$B3N$+$K6D$k$H$*$j$G$9!"0J8e$=$&$7$^$9!#(B

$B$9!#(BXML$B@k8@$N%(%s%3!<%G%#%s%0$,(BShift_JIS$B$J$N$K(BXML$B$NCf$K(B
Shift_JIS$B$K$O$J$$J8;z$,F~$C$F$7$^$&$+$b$7$l$J$$$H$$$&$3$H$G$9(B
$B$h$M!)(B

$B!VB>$N(BXML$B%Q!<%5!W$N$?$a$K$^$5$K$3$l$,I,MW$J$N$G$9!#(B

Windows $B$N(B API$B!“(Bkernel32 $B$N(B MultiByteToWideChar
$B$d!”(BMlang.dll $B$N(B
ConvertINetString$B!“(B.NET Framework $B$N(B Encoding $B$O(B"Shift_JIS”
$B$r(B
$BM?$($k$H(B Windows-31J $B$H$7$F!“(B"EUC-JP” $B$rM?$($k$H(B CP51932
$B$H$7$F2r<a$7$^$9!#(B

$B$J$N$G!“$3$l$i$N(B API $B$r;H$&(B XML $B%Q!<%5$rAw?.$9$k;~$O!”(BRuby
$BB&$G$O(B
XML $B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0$H!“JQ49$GMQ$$$k%(%s%3!<%G%#%s%0$r(B
$BJQ$($kI,MW$,$”$j$^$9!#(B

$B$3$NJU$H@h$N(B XML
$B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0L>$rJ#9gE*$KF’$s$8$c$C$?$N$,!“(B
$BNc$($P(BJava $B$J$I$+$i(B Windows $B8~$1$N(B XML
$B$r$I$&$d$C$F=q$-=P$9$+!”$H$$$&$*OC$G$9!#(B

http://d.hatena.ne.jp/Kazzz/20050614/p1

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:42572] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Sat, 13 Nov 2010
18:23:36 +0900,
“NARUSE, Yui” [email protected] wrote:

$B%Q%C%A$r:n$C$F$_$^$7$?!#(B
https://github.com/nurse/ruby/compare/trunk...rexml

$B$"$j$,$H$&$4$6$$$^$9!#(B
REXML::Encoding$B%/%i%9$H$+(BREXML::XMLEncoding$B%/%i%9$H$+$r:n$m(B
$B$&$+$H;W$C$F$$$?$N$G$9$,!"J8;zNs$G$b$$$$$h$&$J5$$b$7$F$-$^$7(B
$B$?!#!J(BXML$B@k8@$N%(%s%3!<%G%#%s%0$rHf3S$7$F$$$k$H$3$m$,J,;6$7(B
$B$F$$$F$$$m$s$J$H$3$m$G(Bupcase$B$,$G$F$/$k$N$,7y$@$C$?!#!K(B
$B<B:]$K%3!<%I$r=q$-=P$7$?$i$^$?9M$($,JQ$o$k$+$b$7$l$^$;$s(B
$B$,!#!#!#(B

83a66d67 $B$,(B encoding $B$r(B String $B$KLa$9$b$N$N$&$A!“<gMW$J$b$N!#(B
8d20327b $B$,(B 83a66d67 $B$K4^$^$l$k$Y$-JQ99$N$&$A!”<gMW$G$J$$$b$N$r!"(B
$B$o$+$j$d$9$5$N$?$a:#2sJL$K$7$F$$$^$9(B
2de823bd $B$,(B warning $B>C$7(B
14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$(!<$C$H!“(Bwarning$B>C$7$H$+$O:.$<$J$$$GM_$7$+$C$?$G$9!#(B
$B$”$H!“(Bwarning$B$r>C$=$&$H$9$k$N$O$h$$$H;W$&$N$G$9$,!”>C$9$3$H(B
$B$,L\E*$JJQ99$O$h$/$J$$$H;W$C$F$$$^$9!#%@%a$J$H$3$m$K5$$E$-$K(B
$B$/$/$J$k$N$G!#(B
$BD>$9$J$i$A$c$s$H$7$?%3!<%I$KD>$7$?J}$,$h$$$H;W$C$F$$$^$9!#(B
$BNc$($P!"$3$&$$$&$N$K$O$A$c$s$H(Bassert$B$r$D$1$?J}$,$h$$$H;W$C$F(B
$B$$$^$9!#(B

def test_oses_with_bad_EOLs

  • d = Document.new(“\n\n\n<?xml version='1.0'?>\n\n\n\n\n”)

$B$H$$$&$3$H$G!"%(%C%;%s%9$@$1;29M$K$7$F=q$-D>$7$F$*$-$^$9$M!#(B

$B$“!”$=$&$$$($P!“(Bdecode$B$N$H$3$m$GI,$:(BBOM$B$r%A%'%C%/$9$k$h$&$K(B
$B$7$F$$$^$9$,!”$3$l$OI,MW$J$s$G$7$g$&$+!)(BBOM$B$O%U%!%$%k$N@hF,(B
$B$G$@$1%A%'%C%/$9$l$P$$$$$N$@$H;W$C$F$$$^$7$?!#(B

$B$3$l$K$h$C$FNc$($P0J2<$N$h$&$J0c$$$,=P$^$9!#(B

$B$3$l$O2?$K$h$k0c$$$G$9$+!)(B

14187b46 $B$,(B transcode $BMQ$NJ8;z%3!<%I;XDj$rDI2C$9$k%3!<%I$G$9!#(B

$B$NOC$G$7$g$&$+!)(B

p s

o = REXML::Output.new(s=“”, “EUC-JP”)
x.write(o)
% ./ruby test.rb
“<?xml version='1.0' encoding='EUC-JP'?>\n\x{A4A2}\x{A1C1}\n”
/home/naruse/local/ruby/lib/ruby/1.9.1/rexml/encoding.rb:34:in `encode’: U+FF5E
from UTF-8 to EUC-JP (Encoding::UndefinedConversionError)

REXML::Document#write $B$G$b(B transcode encoding $B$r;XDj$G$-$?J}$,$$$$$+$J$!(B
$B$H$b;W$C$F$$$k$N$G$9$,!“$H$j$”$($:J}8~$H$7$F$O$3$s$J46$8$G$9!#(B

$B$3$N5!G=$O;d$O$$$i$J$$$H;W$C$F$$$^$9!#(B
$B=PNO;~$K;XDj$9$k$N$G$O$J$/!"(BXML$B@k8@$r=q$-49$($FJQ99$9$k(BAPI$B$N(B
$BJ}$,$h$$$H;W$C$F$$$^$9!#!J$J$N$G:#$N$^$^$G$h$$!#!K(B

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:42608] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Sat, 20 Nov 2010
15:58:16 +0900,
“NARUSE, Yui” [email protected] wrote:

$B8=<BE*$K$O%(%s%3!<%G%#%s%0$GH=Dj$9$k$h$j$b!“$=$N%K!<%:$N>l9g!”(B
XML $BA4BN$,(B CP932 $B$KJQ49$G$-$k$+$GH=Dj$7$?J}$,%Y%?!<$@$H;W$$$^$9!#(B

$B;d$O$=$N$“$?$j$O$h$/$o$+$i$J$$$N$G$9$,!”(BCP932$B$OF|K\8l$NA4It(B
$B$NJ8;z$r4^$s$G$$$k$s$G$7$?$C$1!)!J(BEUC-JP$B$H(BCP932$B$rAj8_$KJQ49(B
$B$7$F$b7gMn$9$k>pJs$,$J$$$+$I$&$+!K(B

$B4^$s$G$$$J$$$N$G$“$l$P!”>e5-$N%(%s%3!<%G%#%s%0$+$I$&$+$rH=CG(B
$B$7$?J}$,$h$5$=$&$J5$$,$7$^$9!#(B

ConvertINetString$B!“(B.NET Framework $B$N(B Encoding $B$O(B"Shift_JIS” $B$r(B
$BM?$($k$H(B Windows-31J $B$H$7$F!“(B"EUC-JP” $B$rM?$($k$H(B CP51932
$B$H$7$F2r<a$7$^$9!#(B

$B$J$N$G!“$3$l$i$N(B API $B$r;H$&(B XML $B%Q!<%5$rAw?.$9$k;~$O!”(BRuby
$BB&$G$O(B
XML $B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0$H!“JQ49$GMQ$$$k%(%s%3!<%G%#%s%0$r(B
$BJQ$($kI,MW$,$”$j$^$9!#(B

.NET Framework$B$N(BXML$B%Q!<%50J30$O:$$i$J$$$N$G$7$g$&$+!)(B
REXML$B$O(B.NET Framework$B$N<BAu$K9g$o$;$k$h$j$O(BXML$B$N;EMM$K9g$o$;(B
$B$k$Y$-$@$H;W$C$F$$$^$9!#(B
$B!J(BXML$B%Q!<%5$8$c$J$/$F(BSGML$B%Q!<%5$H$+$J$i$I$C$A$G$b$$$$$d!"$H(B
$B;W$$$^$9$,!#!K(B

$B$3$NJU$H@h$N(B XML
$B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0L>$rJ#9gE*$KF’$s$8$c$C$?$N$,!“(B
$BNc$($P(BJava $B$J$I$+$i(B Windows $B8~$1$N(B XML
$B$r$I$&$d$C$F=q$-=P$9$+!”$H$$$&$*OC$G$9!#(B
L'eclat des jours(2005-06-14)
文字エンコーディング名の狭間 - Kazzz's diary

$B!V(BJava$B$H(B.NET$B$N(BXML$B%Q!<%5$N5sF0$N0c$$$G$O$^$i$J$$$h$&$K$9$k$K(B
$B$O(BUTF-8$B$r;H$*$&$M!W$H$$$&$3$H$N$h$&$KFI$a$^$7$?!#(B

$B?\F#$G$9!#(B

$B$&!<$s!"$&!<$s!“J#?t$N$3$H$,F1;~$K?J$a$i$l$F$$$k5$$,$9$k$N$G(B
$B$9$,!”@.@%$5$s$O$=$N$D$b$j$G?J$a$F$$$^$9$+!);d$O(B1$B$D$:$D$,$$$$(B
$B$N$G$9$,!#!#!#(B

$B$U$?$D$N$3$H$,F1;~$K?J$s$G$$$k5$$,$7$F$$$^$9!#(B

  1. XML$B@k8@$r%(%s%3!<%G%#%s%0$rJ8;zNs$GI=8=$9$k$3$H!#(B
  2. XML$B=q$-=P$7;~$K%(%s%3!<%G%#%s%0$rJQ99$G$-$k$h$&$K$9$k$3(B
    $B$H!#(B

1.$B$H(B2.$B$OFHN)$7$F$$$k$H;W$C$F$$$k$N$G!"$b$7!"F1;~$K?J$a$h$&$H(B
$B$7$F$$$k$J$iJL!9$K$7$F$[$7$$$G$9!#(B

$B$H!“;d$O”,$N$h$&$K;W$C$F$$$k$N$G$9$,!“$3$l$C$F$”$C$F$$$^$9$+!)(B
$B$“$C$F$$$k$N$J$i!”$I$A$i$+$i?J$a$k$N$,$h$$$+65$($F$b$i$($^$9(B
$B$+!)$"$C$F$$$J$$$J$i!"8=:_!"2?$,?J$s$G$$$k$N$+$r65$($F$[$7$$(B
$B$G$9!#!#!#(B

In [email protected]
“[ruby-dev:42611] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Sat, 20 Nov 2010
17:56:12 +0900,

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

(2010/11/21 18:36), Kouhei S. wrote:

$B$&!<$s!"$&!<$s!“J#?t$N$3$H$,F1;~$K?J$a$i$l$F$$$k5$$,$9$k$N$G(B
$B$9$,!”@.@%$5$s$O$=$N$D$b$j$G?J$a$F$$$^$9$+!);d$O(B1$B$D$:$D$,$$$$(B
$B$N$G$9$,!#!#!#(B

$B$(!<$C$H!"(B2$B$D$H8@$($P(B2$B$D$G$9$+$M!#(B

$B$U$?$D$N$3$H$,F1;~$K?J$s$G$$$k5$$,$7$F$$$^$9!#(B

  1. XML$B@k8@$r%(%s%3!<%G%#%s%0$rJ8;zNs$GI=8=$9$k$3$H!#(B
  2. XML$B=q$-=P$7;~$K%(%s%3!<%G%#%s%0$rJQ99$G$-$k$h$&$K$9$k$3(B
    $B$H!#(B

$B$O(BXML$B=q$-=P$7;~$NJQ49MQ%(%s%3!<%G%#%s%0$r!"$H$$$&$3$H$G$9$h$M!#(B

1.$B$H(B2.$B$OFHN)$7$F$$$k$H;W$C$F$$$k$N$G!"$b$7!"F1;~$K?J$a$h$&$H(B
$B$7$F$$$k$J$iJL!9$K$7$F$[$7$$$G$9!#(B

$BFHN)$H$O0c$$$^$9$+$M!"(B2. $B$O(B 1. $B$K0MB8$7$F$$$k$H;W$$$^$9!#(B

$B$h$j@53N$K$O!"(B
$B$^$:(B XMLDecl#encoding $B$,$$$F!"(B
XML $B@k8@$N%(%s%3!<%G%#%s%0B0@-$O(B XMLDecl#encoding $B$r;H$C$F$$$k!#(B
XML$B=q$-=P$7;~$NJQ49MQ%(%s%3!<%G%#%s%0$b(B XMLDecl#encoding
$B$rMQ$$$F$$$k!#(B
$B$K$J$j$^$9$+!#(B

$B$H!";d$O",$N$h$&$K;W$C$F$$$k$N$G$9$,!"$3$l$C$F$"$C$F$$$^$9$+!)(B
$B$"$C$F$$$k$N$J$i!"$I$A$i$+$i?J$a$k$N$,$h$$$+65$($F$b$i$($^$9(B
$B$+!)$"$C$F$$$J$$$J$i!"8=:_!"2?$,?J$s$G$$$k$N$+$r65$($F$[$7$$(B
$B$G$9!#!#!#(B

$B0MB84X78$,>e5-$NDL$j$J$N$G!"$^$:(B XMLDecl#encoding
$B$r7h$a$kI,MW$,$"$j$^$9!#(B

XMLDecl#encoding $BC1BN$G$NO@E@$O!"(B

  • $B7?(B
  • $B7?$,(B String $B$N>l9g!"@55,2=$9$k$+$I$&$+(B
    $B$G$7$g$&!#(B

$B$o$?$7$O!"(B[ruby-dev:42608] $B$G5s$2$?(B csWindows31J
$B$r;XDj$7$?$$Nc$r9M$($k$K!"(B
String $B$G$+$D@55,2=$7$J$$I,MW$,$"$k$H9M$($F$$$^$9!#(B

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:42614] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Sun, 21 Nov 2010
21:49:07 +0900,
“NARUSE, Yui” [email protected] wrote:

$B0MB84X78$,>e5-$NDL$j$J$N$G!“$^$:(B XMLDecl#encoding
$B$r7h$a$kI,MW$,$”$j$^$9!#(B

XMLDecl#encoding $BC1BN$G$NO@E@$O!"(B

  • $B7?(B
  • $B7?$,(B String $B$N>l9g!"@55,2=$9$k$+$I$&$+(B
    $B$G$7$g$&!#(B

$B$o$?$7$O!“(B[ruby-dev:42608] $B$G5s$2$?(B csWindows31J
$B$r;XDj$7$?$$Nc$r9M$($k$K!”(B
String $B$G$+$D@55,2=$7$J$$I,MW$,$"$k$H9M$($F$$$^$9!#(B

$B$o$+$j$^$7$?!(B
$B$G$O!"(BXMLDecl#encoding$B$NJ}$+$i$G!
(B

$B$?$@!">/$J$/$H$b;%KZ(BRuby$B2q5D(B03$B$,=*$o$k$3$m$^$G$O<j$r$D$1$i$l(B
$B$J$$$N$G$=$l$+$i$G$*4j$$$7$^$9!#!#!#(B

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

(2010/11/22 21:07), Kouhei S. wrote:

$B$G$7$g$&!#(B

$B$o$?$7$O!"(B[ruby-dev:42608] $B$G5s$2$?(B csWindows31J
$B$r;XDj$7$?$$Nc$r9M$($k$K!"(B

String $B$G$+$D@55,2=$7$J$$I,MW$,$"$k$H9M$($F$$$^$9!#(B

$B$o$+$j$^$7$?!(B
$B$G$O!"(BXMLDecl#encoding$B$NJ}$+$i$G!
(B

$B$O$$!#(B

$B$o$?$7$N<gD%$@$1$^$H$a$F$*$/$H!"(B

  • XMLDecl#encoding $B$O(B String $B$G$"$k$Y$-(B
  • XMLDecl#encoding= $B$d=i4|2=Ey$G$O@55,2=$7$J$$(B
  • XMLDecl#canonical_encoding_name $BEy$rDI2C$9$k$3$H$K$OH?BP$7$J$$(B
    ($B$1$I!"$$$i$J$$$s$8$c$J$$$+$J$!!"MW%f!<%9%1!<%9(B)

$BM}M3$O(B XML
$B@k8@$N%(%s%3!<%G%#%s%0B0@-$O@55,L>0J30$rF~$l$?$$;~$,$"$k$+$i!#(B
$B$=$N!VF~$l$?$$;~!W$H$OA[Dj$7$F$$$k<u?.%Q!<%5$,2r<a2DG=$J(B
$B%(%s%3!<%G%#%s%0L>$,$=$N@55,L>$H0[$J$k>l9g!#(B

$B$H8@$C$?$H$3$m$G$7$g$&$+!#(B

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

$B4^$s$G$$$J$$$N$G$“$l$P!”>e5-$N%(%s%3!<%G%#%s%0$+$I$&$+$rH=CG(B
$B$7$?J}$,$h$5$=$&$J5$$,$7$^$9!#(B

EUC-JP $B$+$i(B CP932 $B$KJQ49$9$k$H!"Jd=u4A;z$,Mn$A$^$9$M!#(B

$B$7$+$7!“$o$?$7$NCN$k8B$j!VF|K\8l$C$]$$$b$N$@$1$r07$$$?$$;~!W$H$$$&$N$O!”(B
(1) $BF|K\8l$NJ8;z$@$1$r07$$$?$$(B
(2) $BF|K\8l$7$+A[Dj$7$F$$$J$$=hM}$,$“$k(B
(3) $B1&$+$i:8$K=q$/$h$&$JJ8;z$d%<%mI}J8;zEy$r=3$j$?$$(B
$B$/$i$$$J$N$G!”$=$N>l9g%(%s%3!<%G%#%s%0$GH=Dj$9$k$h$j$b!"(B
$BFbMF$GH=Dj$7$?J}$,BEEv$@$H;W$C$F$$$^$9!#(B

$B0lJ}$G!“FC$KM}M3L5$/F|K\8l$K8BDj$7$?$$$H$$$&$N$J$i$P!”$=$l$O$o$6$o$6(B
$B5$8/$&$Y$-=hM}$G$bL5$$$N$G!"(Bupcase $B$J$j(B Encoding.find $B$J$j$r(B
$B;H$C$FD:$$$?J}$,$h$$$G$7$g$&!#(B

ConvertINetString$B!“(B.NET Framework $B$N(B Encoding $B$O(B"Shift_JIS” $B$r(B
$B;W$$$^$9$,!#!K(B
.NET Framework $B$@$1$G$J$/!“(BWin32API $B$d(B IE $B$N(B MLang
$B$r;H$C$F$$$k(B XML $B%Q!<%5$G$9!#(B
Web $B7O$O(B MS $B<BAu$K$”$o$;$F$$$k$N$G!"(BGecko $B$d(B WebKit
$B$b$=$&$G$9$+$M!#(B

$B$^$?!“>o$KJQ$($k$o$1$G$O$J$/!VJQ$($i$l$k$h$&$K$9$k!W$J$N$G!”(B
MS $B$N<BAu$K$“$o$;$k$o$1$G$b$”$j$^$;$s!#(B

$B$3$NJU$H@h$N(B XML
$B@k8@$GMQ$$$k%(%s%3!<%G%#%s%0L>$rJ#9gE*$KF’$s$8$c$C$?$N$,!“(B
$BNc$($P(BJava $B$J$I$+$i(B Windows $B8~$1$N(B XML
$B$r$I$&$d$C$F=q$-=P$9$+!”$H$$$&$*OC$G$9!#(B
L'eclat des jours(2005-06-14)
文字エンコーディング名の狭間 - Kazzz's diary

$B!V(BJava$B$H(B.NET$B$N(BXML$B%Q!<%5$N5sF0$N0c$$$G$O$^$i$J$$$h$&$K$9$k$K(B
$B$O(BUTF-8$B$r;H$*$&$M!W$H$$$&$3$H$N$h$&$KFI$a$^$7$?!#(B

UTF-8 $B$G$$$$$8$c$s$H$$$&3d$j@Z$jO)@~$@$H!"Ev=i$N$o$?$7$N(B
$B!VB>$N%(%s%3!<%G%#%s%0$N$?$a$K8_49@-$r2u$9$Y$-$G$O$J$$$N$G(B revert
$B$9$Y$-!W(B
$B$H<gD%$K5"Ce$9$k$+$H;W$$$^$9!#(B

$B?\F#$G$9!#(B

$B$3$3(B1,2$B%v7n$O<j$r$D$1$i$l$=$&$J$N$G!":#!"9M$($F$$$kJ,$@$1=q(B
$B$$$F$*$-$^$9!#(B

In [email protected]
“[ruby-dev:42618] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Tue, 23 Nov 2010
02:56:41 +0900,
“NARUSE, Yui” [email protected] wrote:

$B$o$+$j$^$7$?!*(B

$BM}M3$O(B XML
$B@k8@$N%(%s%3!<%G%#%s%0B0@-$O@55,L>0J30$rF~$l$?$$;~$,$"$k$+$i!#(B
$B$=$N!VF~$l$?$$;~!W$H$OA[Dj$7$F$$$k<u?.%Q!<%5$,2r<a2DG=$J(B
$B%(%s%3!<%G%#%s%0L>$,$=$N@55,L>$H0[$J$k>l9g!#(B

$B$H8@$C$?$H$3$m$G$7$g$&$+!#(B

$B;~4V$,$?$C$FK:$l$+$1$F$$$k$N$G$9$,!"(B

XMLDecl#encoding $B$O(B String $B$G$"$k$Y$-(B

$B$H$$$&$h$j$O!"(B

XML$B@k8@$K5-=R$9$k%(%s%3!<%G%#%s%0!J(B=$B>pJs8r49MQId9f$G$9$h(B
$B$M!)!K$HFbIt=hM}$K;H$&%(%s%3!<%G%#%s%0!J(B=$BFbIt=hM}MQId9f(B
=transcode $B$G$9$h$M!)!K$rJL!9$K4IM}$G$-$k$h$&$K$9$k$Y$-(B

$B$G$9$h$M!)(B

$B$G!“JL!9$K$7$J$$$H:$$kNc$,(BUTF-16$B$H(BUTF-32$B$J$s$G$9$h$M!#(B
$BEv;~$N(BRuby$B$K$O(BUTF-16$B$H(BUTF-32$B$H$$$&(BEncoding$B$,$J$+$C$?$N$G!V>p(B
$BJs8r49MQId9f!W$rI=8=$G$-$J$$$+$i(BEncoding$B$r;H$C$A$c$@$a$G!”(B
UTF-16$B$H(BUTF-32$B$KBP1~$9$k$?$a$K$OBe$o$j$K(BString$B$r;H$&$3$H!“$H(B
$B$$$&$3$H$@$HG’<1$7$F$$$^$9!#$”$C$F$$$^$9$+!)(B

$B:#!“(Btrunk$B$r$$F$$k$H!”(BUTF-16/UTF-32$B$H$$$&(BEncoding$B$,DI2C$5$l(B
$B$F$$$?$N$G!"!V>pJs8r49MQId9f!W$NI=8=$H$7$F(BEncoding$B$r;H$($k$H(B
$B;W$C$F$$$^$9!#(B

$B$=$l$H$OJL$K!VFbIt=hM}MQId9f!W$r;}$D$h$&$K$7$h$&$H;W$C$F$$$^(B
$B$9!#L>A0$O(BXMLDecl#transcode, XMLDecl#transcode=$B$,$$$$$s$8$c$J(B
$B$$$+$H;W$C$F$$$^$9!#$3$l$K$b(BEncoding$B$r;H$&$D$b$j$G$9!#(B

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

2011$BG/(B2$B7n(B21$BF|(B22:50 Kouhei S. [email protected]:

XMLDecl#encoding $B$O(B String $B$G$"$k$Y$-(B

$B$H$$$&$h$j$O!"(B

XML$B@k8@$K5-=R$9$k%(%s%3!<%G%#%s%0!J(B=$B>pJs8r49MQId9f$G$9$h(B
$B$M!)!K$HFbIt=hM}$K;H$&%(%s%3!<%G%#%s%0!J(B=$BFbIt=hM}MQId9f(B
=transcode $B$G$9$h$M!)!K$rJL!9$K4IM}$G$-$k$h$&$K$9$k$Y$-(B

$B$G$9$h$M!)(B

$B!VJL!9$K4IM}$G$-$k!W$K2C$($F!“$I$N$h$&$JL>$rL>>h$k$+$^$GI,MW$G$9!#(B
$B$G!”(BEncoding$B$rMQ$$$k$H(BEncoding#name$B$r<B:]$K5-=R$9$k%(%s%3!<%G%#%s%0L>$K(B
$BMQ$$$k$H;W$$$^$9$,!"$3$N>l9gL>A0$N@55,2=$,Av$C$F$7$^$&$N$G$^$:$$$N$G$9!#(B
$B6qBNNc$H$7$F$O(B $B!V(BcsWindows31J$B!W$rMQ$$$?$$;~$H$+!#(B

$B$G!“JL!9$K$7$J$$$H:$$kNc$,(BUTF-16$B$H(BUTF-32$B$J$s$G$9$h$M!#(B
$BEv;~$N(BRuby$B$K$O(BUTF-16$B$H(BUTF-32$B$H$$$&(BEncoding$B$,$J$+$C$?$N$G!V>p(B
$BJs8r49MQId9f!W$rI=8=$G$-$J$$$+$i(BEncoding$B$r;H$C$A$c$@$a$G!”(B
UTF-16$B$H(BUTF-32$B$KBP1~$9$k$?$a$K$OBe$o$j$K(BString$B$r;H$&$3$H!“$H(B
$B$$$&$3$H$@$HG’<1$7$F$$$^$9!#$”$C$F$$$^$9$+!)(B

$B:#!“(Btrunk$B$r$$F$$k$H!”(BUTF-16/UTF-32$B$H$$$&(BEncoding$B$,DI2C$5$l(B
$B$F$$$?$N$G!"!V>pJs8r49MQId9f!W$NI=8=$H$7$F(BEncoding$B$r;H$($k$H(B
$B;W$C$F$$$^$9!#(B

$B$H$$$&$o$1$G!"(BUTF-16 $B$H(B UTF-32
$B$ODI2C$7$^$7$?$,$=$l$@$1$G$OIT==J,$J$N$G$9!#(B

$B$=$l$H$OJL$K!VFbIt=hM}MQId9f!W$r;}$D$h$&$K$7$h$&$H;W$C$F$$$^(B
$B$9!#L>A0$O(BXMLDecl#transcode, XMLDecl#transcode=$B$,$$$$$s$8$c$J(B
$B$$$+$H;W$C$F$$$^$9!#$3$l$K$b(BEncoding$B$r;H$&$D$b$j$G$9!#(B

$BFbIt=hM}MQId9f$r;}$D$3$H$K$O;?@.$7$^$9!#(B

$B$1$l$I$b!V(Btranscode$B!W$O(BCRuby$B$N%(%s%3!<%G%#%s%0JQ49%(%s%8%s$N$G!“(B
Ruby$B%l%$%d$K$O$=$NL>$O=P$7$F$$$J$$$O$:$G$9!#(B
$B$h$C$F!”$3$3$G!V(Btranscode$B!W$H$$$&%a%=%C%IL>$rMQ$$$k$N$OITE,$@$H9M$($^$9!#(B

$B;d$@$C$?$iD9$/$F$b(B internal_encoding $B$r;H$&$+$J$!!"(BIO
$B$H$+$G$b;H$C$F$k$N$G!#(B

$B?\F#$G$9!#(B

$B$“$H$G$^$?9M$($k$N$G$9$,!”:#!"9M$($F$$$k$3$H$r%a%b$,$o$j$KAw$C(B
$B$F$*$-$^$9!#(B

In AANLkTimCVoPzMzKjnj8WPOEU-aBx=removed_email_address@domain.invalid
“[ruby-dev:43246] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Tue, 22 Feb 2011
18:13:38 +0900,
“NARUSE, Yui” [email protected] wrote:

$B!VJL!9$K4IM}$G$-$k!W$K2C$($F!"$I$N$h$&$JL>$rL>>h$k$+$^$GI,MW$G$9!#(B

$B$G!"(BEncoding$B$rMQ$$$k$H(BEncoding#name$B$r<B:]$K5-=R$9$k%(%s%3!<%G%#%s%0L>$K(B

$BMQ$$$k$H;W$$$^$9$,!"$3$N>l9gL>A0$N@55,2=$,Av$C$F$7$^$&$N$G$^$:$$$N$G$9!#(B
$B6qBNNc$H$7$F$O(B $B!V(BcsWindows31J$B!W$rMQ$$$?$$;~$H$+!#(B

$B$`$%!#!V(BcsWindows31J$B!W$G$9$+!#(B
$B!V(BcsWindows31J$B!W$r;H$$$?$$$H$-$H$$$&$N$O!“$h$&$O(BMicrosoft$B8~(B
$B$1$K(BXML$B$r=PNO$7$?$$$H$-$G$9$h$M!#$G$”$l$P!"J8;zNs2=$9$k$H$-(B
$B$K(B:for_microsoft => true$B$_$?$$$J%*%W%7%g%s$r;XDj$9$k$h$&$J(B
API$B$NJ}$,$h$$$H9M$($F$$$^$9!#M}M3$O$=$C$A$NJ}$,0U?^$rI=8=$7(B
$B$F$$$k$+$i$G$9!#(B

$B$=$b$=$b!“;d$,(BXML$B@k8@$N%(%s%3!<%G%#%s%0$K(BEncoding$B$r;H$$$?$$$N(B
$B$O(Btypo$B$H$+$N4V0c$$$r$J$k$Y$/5/$3$7$E$i$+$C$?$j!“5$IU$-$d$9$$(B
API$B$K$7$?$$$+$i$G$9!#(BREXML$B$O(BRuby$B$N(Btranscode$B!J$G$9$h$M!)!K$r%Y!<(B
$B%9$K$7$F$$$k$?$a!”(Btranscode$B$,BP1~$7$F$$$k%(%s%3!<%G%#%s%00J30(B
$B$O07$($J$$$N$G!”(BXML$B@k8@$r(BEncoding$B$GI=8=$9$l$P!"%5%]!<%H30$N$b(B
$B$N$r8!=P$7$d$9$/$J$k$H;W$C$F$$$^$9!#(B

$B$=$l$H$OJL$K!VFbIt=hM}MQId9f!W$r;}$D$h$&$K$7$h$&$H;W$C$F$$$^(B
$B$9!#L>A0$O(BXMLDecl#transcode, XMLDecl#transcode=$B$,$$$$$s$8$c$J(B
$B$$$+$H;W$C$F$$$^$9!#$3$l$K$b(BEncoding$B$r;H$&$D$b$j$G$9!#(B

$BFbIt=hM}MQId9f$r;}$D$3$H$K$O;?@.$7$^$9!#(B

$B$1$l$I$b!V(Btranscode$B!W$O(BCRuby$B$N%(%s%3!<%G%#%s%0JQ49%(%s%8%s$N$G!"(B

Ruby$B%l%$%d$K$O$=$NL>$O=P$7$F$$$J$$$O$:$G$9!#(B

$B$h$C$F!"$3$3$G!V(Btranscode$B!W$H$$$&%a%=%C%IL>$rMQ$$$k$N$OITE,$@$H9M$($^$9!#(B

$B$J$s$H!#0lHLE*$JMQ8l$J$N$+$H;W$C$F$$$^$7$?!#(B
$B$G$"$l$P!“JL$K%”%/%;%5$rDs6!$7$J$/$F$b$h$$$+$J$!$H$$$&5$$K$J$C(B
$B$F$-$^$7$?!#$=$s$J$KIQHK$K;H$&$h$&$J5$$b$7$J$$$N$G!"B0@-$dFb(B
$BMF$r$H$C$F$-$F(Bencoding$B$7$F$b$i$&$N$G$b:$$i$J$=$&!#(B

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

(2011/02/22 22:12), Kouhei S. wrote:

=transcode $B$G$9$h$M!)!K$rJL!9$K4IM}$G$-$k$h$&$K$9$k$Y$-(B
$B$1$K(BXML$B$r=PNO$7$?$$$H$-$G$9$h$M!#$G$"$l$P!"J8;zNs2=$9$k$H$-(B
$B$K(B:for_microsoft => true$B$_$?$$$J%*%W%7%g%s$r;XDj$9$k$h$&$J(B
API$B$NJ}$,$h$$$H9M$($F$$$^$9!#M}M3$O$=$C$A$NJ}$,0U?^$rI=8=$7(B
$B$F$$$k$+$i$G$9!#(B

$B=PNO$N%(%s%3!<%G%#%s%0$O(B Windows-31J $B$@$1$IL>>h$j$O(B Shift_JIS
$B$K$5$;$?$$(B
$B$H$$$&Nc$b$"$j$($^$9$M!#$^$?!"$5$i$K(B Solaris $BMQ$K(B PCK
$B$HL>>h$i$;$?$$$H$+!#(B
(PCK $B$O(B Windows-31J $B$+(B Shift_JIS $B$N(B alias
$B$H$7$FDI2CM=Dj(B)

$BJL$N%f!<%9%1!<%9$@$H!"%1!<%?%$3(J8;z$r4^$s$@(BUTF-8$B$J(BXHTML$B$r(BREXML$B$G=hM}$7$F!"(B
UTF8-DoCoMo$B$H$7$F=PNO$7$D$D!"$=$$$D$K(BUTF-8$B$HL>>h$i$;$?$$$H$+!#(B

$B0lHLO@$H$7$F$O(B XML $B@k8@$N(B encoding
$BB0@-$O<u?.B&$N(BXML$B%Q!<%5$N(B
$BJ8;z%3!<%IJQ494o$N0z?t$J$N$G!"(BRuby
$B$,JQ49$O2DG=$@$,L>A0$rCN$i$J$$>l9g$d!"(B
Ruby $B$G$O(B alias $B$K$J$C$A$c$C$F$kNc$,9M$($i$l$^$9!#(B

$B$=$b$=$b!";d$,(BXML$B@k8@$N%(%s%3!<%G%#%s%0$K(BEncoding$B$r;H$$$?$$$N(B
$B$O(Btypo$B$H$+$N4V0c$$$r$J$k$Y$/5/$3$7$E$i$+$C$?$j!“5$IU$-$d$9$$(B
API$B$K$7$?$$$+$i$G$9!#(BREXML$B$O(BRuby$B$N(Btranscode$B!J$G$9$h$M!)!K$r%Y!<(B
$B%9$K$7$F$$$k$?$a!”(Btranscode$B$,BP1~$7$F$$$k%(%s%3!<%G%#%s%00J30(B
$B$O07$($J$$$N$G!"(BXML$B@k8@$r(BEncoding$B$GI=8=$9$l$P!"%5%]!<%H30$N$b(B
$B$N$r8!=P$7$d$9$/$J$k$H;W$C$F$$$^$9!#(B

$B$=$b$=$b!"(BEncoding $B$O54<V$N%b%8%e!<%k$KBP1~$9$k%*%V%8%’%/%H$G!"(B
transcode $B$NJQ494o$KBP$9$k0z?t$H$OJL$NOC$G$9$h!#(B
$BNc$($PJQ49;~$K(B Apple $BHG(B NFD $B$r9T$&$3$H$r0UL#$9$k(B UTF8-MAC
$B$J$s$+$O!"(B
$B8=>u(B encoding
$B$H$7$F$bJL$K$J$C$F$^$9$,!"$3$l$O<:GT$@$C$?5$$,$9$k$N$G(B
UTF-8 $B$KE}9g$7$h$&$+$H$b;W$C$F$$$?$j!#(B

$B$^$?!"(Bencoding $B@k8@$OAw?.B&$G$"$k(B Ruby/REXML $B$G$O$J$/!"(B
$B<u?.B&$,2r<a$9$k$b$N$J$N$G!"$3$A$i$,%5%]!<%H$7$F$$$k$+$I$&$+$OK<AE*$K$O(B
$BLdBj$G$O$"$j$^$;$s$M!#(BEncoding
$B%*%V%8%’%/%H$r<u$1IU$1$F$b$$$$$H$O;W$$$^$9$,!#(B

$B$J$s$H!#0lHLE*$JMQ8l$J$N$+$H;W$C$F$$$^$7$?!#(B
$B$G$"$l$P!“JL$K%”%/%;%5$rDs6!$7$J$/$F$b$h$$$+$J$!$H$$$&5$$K$J$C(B
$B$F$-$^$7$?!#$=$s$J$KIQHK$K;H$&$h$&$J5$$b$7$J$$$N$G!"B0@-$dFb(B
$BMF$r$H$C$F$-$F(Bencoding$B$7$F$b$i$&$N$G$b:$$i$J$=$&!#(B

$B$&$$!)$3$3$N!VFbIt=hM}MQId9f!W$C$F8=:_$b$C$Q$i(B UTF-8
$B$r;H$C$F$$$k!"(B
REXML $BFbIt$G(BXML$BCGJR$KMQ$$$k(B encoding $B$H$OJL$G$7$?$+!)(B

$BG0$N$?$a$^$H$aD>$9$H!"EP>l?MJ*$O0J2<$N;0<T$G$9$M!#(B

  • REXML $BFbIt%(%s%3!<%G%#%s%0(B
    • REXML $BFbIt$G$N=hM}$GMQ$$$k%(%s%3!<%G%#%s%0(B
    • $B8=:_$b$C$Q$i(B UTF-8
    • Encoding $B%*%V%8%’%/%H2D(B
  • REXML $B=PNO%(%s%3!<%G%#%s%0(B
    • $BJ8;zNs2=$7$F=PNO$7$?7k2L$N(B encoding
    • transcode $B$,!VFbIt(Bto$B=PNO!W$NJQ49$r07$($kI,MW(B
    • Encoding $B%*%V%8%’%/%H2D(B
  • $B=PNO7k2L$N(BXML$B@k8@$N(Bencoding$BB0@-$NCM(B
    • $B=PNO7k2L$r2r<a$9$k$I$3$+$N(BXML$B%Q!<%5$,8+$kCM(B
    • Ruby $B$,M}2r$G$-$kI,MW$O$J$$(B
    • String $B$,K>$^$7$$(B

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

(2011/02/22 23:47), Kouhei S. wrote:

$B=PNO$N%(%s%3!<%G%#%s%0$O(B Windows-31J $B$@$1$IL>>h$j$O(B Shift_JIS
$B$K$5$;$?$$(B
$B$H$$$&Nc$b$“$j$($^$9$M!#$^$?!”$5$i$K(B Solaris $BMQ$K(B PCK
$B$HL>>h$i$;$?$$$H$+!#(B
(PCK $B$O(B Windows-31J $B$+(B Shift_JIS $B$N(B alias $B$H$7$FDI2CM=Dj(B)

$B$&!<$s!#(B
Solaris$B$GF0$/(BXML$B%Q!<%5!J!)(Biconv$B!)!K$O(BPCK$B$H$$$&$N$b2r<a$9$k$s(B
$B$G$9$+!#(B

Solaris $B$N(B iconv
$B$O$3$NJU$H$+$G$9$M!#!V(BPC$B4A;z!W$H$$$&L>>NM3Mh$i$7$$!#(B
http://download.oracle.com/docs/cd/E19455-01/816-2371/6m8no45nr/index.html
$BA0Ds$H$7$F!"(Biconv $B$C$F(B glibc iconv / GNU libiconv
$B$@$1$8$c$J$$$N$G!#(B

$B0lHLO@$H$7$F$O(B XML $B@k8@$N(B encoding $BB0@-$O<u?.B&$N(BXML$B%Q!<%5$N(B
$BJ8;z%3!<%IJQ494o$N0z?t$J$N$G!“(BRuby
$B$,JQ49$O2DG=$@$,L>A0$rCN$i$J$$>l9g$d!”(B
Ruby $B$G$O(B alias $B$K$J$C$A$c$C$F$kNc$,9M$($i$l$^$9!#(B

$B$3$l$,$7$C$/$j$3$J$$$s$G$9$h$M!#(B
XML$B$O%]!<%?%V%k$J=q<0$@$C$?5$$,$9$k$s$G$9$,!"FCDj$N(BXML$B%Q!<%5(B
$B$N$$GF0$/$h$&$J=PNO$K$9$k$N$r?d>)$9$k$$?$$$@$+$i$+$7$i!#(B

XML $B$,%]!<%?%V%k$J$N$O30OH$@$1$G$7$g$&!#(B
$BCf?H$O4pK\E*$K0lDj$N<u?.<T$,A[Dj$5$l$F$$$k$H;W$$$^$9!#(B
XHTML $B$G$$$($PA[Dj$5$l$F$$$k$N$O$b$C$Q$i(B Web $B%V%i%&%6$H$+!"(B
$B%%l%%l(BXML$B%G!<%?$J$iBP1~$9$k%*%l%W%m%@%/%H$H$+!#(B

$B5U$K8@$($P30OH$@$1$K$H$I$a$F$$$k$+$i(B XML
$B<+BN$O$"$l$@$1%7%s%W%k$+$D%]!<%?%V%k$K$J$C$?$H!#(B

$B$=$b$=$b!“(BEncoding $B$O54<V$N%b%8%e!<%k$KBP1~$9$k%*%V%8%'%/%H$G!”(B
transcode $B$NJQ494o$KBP$9$k0z?t$H$OJL$NOC$G$9$h!#(B

$B$(!"$=$&$J$s$G$9$+!#(B

transcode $B$X$N(B from/to
$B0z?t$O$“$/$^$GJQ49I=$r8F$S=P$9$?$a$N<1JL;R$J$N$G!”(B
$BK<AE*$K$O(B Encoding $B$H$OFHN)$NB8:$K$J$C$F$$$^$9!#(B
$B<B:]$N<BAu$G$b!“(BUTF-7 $B$O(B encoding $B$,$”$C$F$bJQ49$,$J$/!"(B
escape $BMm$
$G$OJQ49$,$“$C$F$bBP1~$9$k(B encoding
$B$OEvA3$J$,$i$”$j$^$;$s!#(B

$B$^$?!“(Bencoding $B@k8@$OAw?.B&$G$”$k(B Ruby/REXML $B$G$O$J$/!“(B
$B<u?.B&$,2r<a$9$k$b$N$J$N$G!”$3$A$i$,%5%]!<%H$7$F$$$k$+$I$&$+$OK<AE*$K$O(B
$BLdBj$G$O$"$j$^$;$s$M!#(BEncoding
$B%*%V%8%'%/%H$r<u$1IU$1$F$b$$$$$H$O;W$$$^$9$,!#(B

$B",$NDL$j(BXML$B$NK<AE*$J$N$O%]!<%?%V%k$G$"$k$3$H$@$H;W$C$F$$$k(B
$B$N$G!"LdBj$J5$$,$9$k$s$G$9$h$M!#(B

$B!V(BUTF-8 $B$H(B UTF-16
$B0J30$N%(%s%3!<%G%#%s%0$O%]!<%?%V%k$G$O$J$$!W$GEz$($K$J$j$^$;$s$+$M!#(B
“All XML processors must accept the UTF-8 and UTF-16 encodings of
Unicode”
http://www.w3.org/TR/REC-xml/#charsets

$B$&$s$s!#$d$C$Q$j$^$@$A$g$C$H$G$b<j$r=P$5$J$+$C$?$[$&$,$h$+$C(B
$B$?$+$b!#$^$?!"?t%v7n8e$K!J;~4V$,$G$-$?$i!K9M$($^$9!#(B

yugui $B$5$s$,(B RubyKaigi $B$“$?$j$G(B 1.9.3
$B$r=P$7$?$$$H6D$C$F$$$?$O$:$J$N$G!”(B
$B?t%v7n$@$H$=$3$X$N;EMMJQ99$N%?%$%_%s%0$H$7$F$O$.$j$.$j$K$J$j$^$9!#(B
$B$H$$$&$+!“$=$3$+$i5DO@$r;O$a$k$H9b3NN($G%”%&%H$G$7$g$&!#(B
$B$G!“8=>u4{$K(B REXML::XMLDecl#encoding
$B$O;EMMJQ99$,F~$C$F$$$k$s$G$9$,!”(B
$B$3$3$O4,$-La$7$^$;$s$+!#$3$30J30$O:#F~$C$F$$$k=$@5$K$D$$$F$O;?@.$J$N$G!#(B

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:43250] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Wed, 23 Feb 2011
00:27:19 +0900,
“NARUSE, Yui” [email protected] wrote:

$B$&$s$s!#$d$C$Q$j$^$@$A$g$C$H$G$b<j$r=P$5$J$+$C$?$[$&$,$h$+$C(B
$B$?$+$b!#$^$?!"?t%v7n8e$K!J;~4V$,$G$-$?$i!K9M$($^$9!#(B

yugui $B$5$s$,(B RubyKaigi $B$“$?$j$G(B 1.9.3
$B$r=P$7$?$$$H6D$C$F$$$?$O$:$J$N$G!”(B
$B?t%v7n$@$H$=$3$X$N;EMMJQ99$N%?%$%_%s%0$H$7$F$O$.$j$.$j$K$J$j$^$9!#(B
$B$H$$$&$+!“$=$3$+$i5DO@$r;O$a$k$H9b3NN($G%”%&%H$G$7$g$&!#(B
$B$G!“8=>u4{$K(B REXML::XMLDecl#encoding $B$O;EMMJQ99$,F~$C$F$$$k$s$G$9$,!”(B
$B$3$3$O4,$-La$7$^$;$s$+!#$3$30J30$O:#F~$C$F$$$k=$@5$K$D$$$F$O;?@.$J$N$G!#(B

$B$^$@(B#encoding$B$O(BEncoding$B$rJV$9$N$G(BOK$B$@$H;W$C$F$$$k$N$G$9$,!“JQ(B
$B99A0$G$O$G$-$F!“8=>u$G$O$G$-$J$$$3$H$,$”$k$H$$$&$3$H$O$o$+$j(B
$B$^$7$?!#!J$?$@!”$=$l$r<B8=$9$kJ}K!$O(B#encoding$B$,(BEncoding$B$rJV$9(B
$B$+$I$&$+$H$OJL$NJ}K!$,$$$$$s$8$c$J$$$+$H;W$C$F$$$k!#!K(B

$B$J$N$G!“;~4V$,$J$$$H$$$&$3$H$G$”$l$P!"4,$-La$9$H$$$&$3$H$G(BOK
$B$G$9!#$*<j?t$G$9$,!"4,$-La$7$F$b$i$($^$9$+!)(B

$B$H$3$m$G!“%U%j!<%:$O$$$D$K$J$k$+$C$F$I$3$+$K$G$F$$$^$7$?$C$1!#(B
$B$b$7!”%U%j!<%:A0$K;~4V$,$G$-$?$i$$$8$m$&$+$H;W$&$N$G$9$,!#!#!#(B

$B?\F#$G$9!#(B

In [email protected]
“[ruby-dev:43248] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss
reports many errors and failures without iconv” on Tue, 22 Feb 2011
23:32:17 +0900,
“NARUSE, Yui” [email protected] wrote:

$B=PNO$N%(%s%3!<%G%#%s%0$O(B Windows-31J $B$@$1$IL>>h$j$O(B Shift_JIS
$B$K$5$;$?$$(B
$B$H$$$&Nc$b$“$j$($^$9$M!#$^$?!”$5$i$K(B Solaris $BMQ$K(B PCK
$B$HL>>h$i$;$?$$$H$+!#(B
(PCK $B$O(B Windows-31J $B$+(B Shift_JIS $B$N(B alias $B$H$7$FDI2CM=Dj(B)

$B$&!<$s!#(B
Solaris$B$GF0$/(BXML$B%Q!<%5!J!)(Biconv$B!)!K$O(BPCK$B$H$$$&$N$b2r<a$9$k$s(B
$B$G$9$+!#(B

$BJL$N%f!<%9%1!<%9$@$H!“%1!<%?%$3(J8;z$r4^$s$@(BUTF-8$B$J(BXHTML$B$r(BREXML$B$G=hM}$7$F!”(B

UTF8-DoCoMo$B$H$7$F=PNO$7$D$D!"$=$$$D$K(BUTF-8$B$HL>>h$i$;$?$$$H$+!#(B

$B$“$!!”$3$l$O$"$j$=$&$G$9$M$'!#(B

$B0lHLO@$H$7$F$O(B XML $B@k8@$N(B encoding $BB0@-$O<u?.B&$N(BXML$B%Q!<%5$N(B
$BJ8;z%3!<%IJQ494o$N0z?t$J$N$G!“(BRuby
$B$,JQ49$O2DG=$@$,L>A0$rCN$i$J$$>l9g$d!”(B
Ruby $B$G$O(B alias $B$K$J$C$A$c$C$F$kNc$,9M$($i$l$^$9!#(B

$B$3$l$,$7$C$/$j$3$J$$$s$G$9$h$M!#(B
XML$B$O%]!<%?%V%k$J=q<0$@$C$?5$$,$9$k$s$G$9$,!"FCDj$N(BXML$B%Q!<%5(B
$B$N$$GF0$/$h$&$J=PNO$K$9$k$N$r?d>)$9$k$$?$$$@$+$i$+$7$i!#(B

$B$=$b$=$b!“(BEncoding $B$O54<V$N%b%8%e!<%k$KBP1~$9$k%*%V%8%'%/%H$G!”(B
transcode $B$NJQ494o$KBP$9$k0z?t$H$OJL$NOC$G$9$h!#(B

$B$(!"$=$&$J$s$G$9$+!#(B

$B$^$?!“(Bencoding $B@k8@$OAw?.B&$G$”$k(B Ruby/REXML $B$G$O$J$/!“(B
$B<u?.B&$,2r<a$9$k$b$N$J$N$G!”$3$A$i$,%5%]!<%H$7$F$$$k$+$I$&$+$OK<AE*$K$O(B
$BLdBj$G$O$"$j$^$;$s$M!#(BEncoding
$B%*%V%8%'%/%H$r<u$1IU$1$F$b$$$$$H$O;W$$$^$9$,!#(B

$B",$NDL$j(BXML$B$NK<AE*$J$N$O%]!<%?%V%k$G$"$k$3$H$@$H;W$C$F$$$k(B
$B$N$G!"LdBj$J5$$,$9$k$s$G$9$h$M!#(B

$B$&$$!)$3$3$N!VFbIt=hM}MQId9f!W$C$F8=:_$b$C$Q$i(B UTF-8 $B$r;H$C$F$$$k!"(B
REXML $BFbIt$G(BXML$BCGJR$KMQ$$$k(B encoding $B$H$OJL$G$7$?$+!)(B

$B$“$!!”$=$&$$$($P!"$=$&$@$C$?$+$b!#(B
$B<:Ni$7$^$7$?!#(B

  • $B=PNO7k2L$r2r<a$9$k$I$3$+$N(BXML$B%Q!<%5$,8+$kCM(B
  • Ruby $B$,M}2r$G$-$kI,MW$O$J$$(B
  • String $B$,K>$^$7$$(B

$B$“$j$,$H$&$4$6$$$^$9!#(B
$B$&$s$s!#$d$C$Q$j$^$@$A$g$C$H$G$b<j$r=P$5$J$+$C$?$[$&$,$h$+$C(B
$B$?$+$b!#$^$?!”?t%v7n8e$K!J;~4V$,$G$-$?$i!K9M$($^$9!#(B