[email protected]@%$G$9!#(B
$B$^$:!“[email protected]}$9$k$H!”(B
iconv:
ext/iconv $B$N$3$H!"J8;z%3!<%IJQ494o(B
glibc iconv $B$H$+(B GNU libiconv $B$H$+(B Citrus iconv $B$H$+$r8F$V(B
transcode:
transcode.c $B$H(B enc/trans/* $B$"$?$j$G<BAu$5$l!"(B
String#encode $B$H$+$G;H$o$l$kJ*(B
Encoding:
encoding.c $B$d(B enc/* $B$G<BAu$5$l!"(BEncoding
$B%/%i%9$H$7$F8=$l$?$j!"(B
String [email protected],I=8=$NN"$GJ8;z$rA`$k!#(B
(2010/11/02 23:38), Kouhei S. wrote:
$B$(!<$H!"$b$H$b$H(Biconv$B$NBe$o$j$K(BEncoding$B$r$H$$$&OC$+$i;O$^$C$F(B
$B$$$?$N$G(BEncoding$B$r;H$C$F$$$?$N$G$9$,!";H$$J,$1$?J}$,$h$$$N$G(B
$B$7$g$&$+!)(B
$B$H$$$&$o$1$G!"$3$3$O!V(Biconv $B$NBe$o$j$K(B transcode $B$r!W$G$9!#(B
$B;H$$J,$1$?$H$7$F!"(Btranscode$B$,(Biconv$B$NBeBX$H$7$F;H$&$K$O$^[email protected](B
$B$$$H$$$&$3$H$G$"$l$P:#2s$NJQ99$O;~4|>[email protected]$C$?5$$,$7$^$9!#(B
$B$3$l$OLdBj$J$$$H;W$$$^$9!#(B
$B$=$l$>$l$N%(%s%3!<%G%#%s%0$N<B:]>e$N<MDxHO0O$OJ8L.$K$h$C$FBe$o$j$^$9!#(B
$B$=$7$F!"(BHTTP $B$d(B HTML$B!"(BXML $B$J$I$N%(%s%3!<%G%#%s%0$H!"(BRuby M17N
$B$N(B
$B%(%s%3!<%G%#%s%0$O0lIt<MDxHO0O$,0[$J$j$^$9!#(B
$B:#$O([email protected]$19M$($F$$$^$9!#(B
$B8e=R$NDL$j!";v>p$OF1$8$G$9!#(B
$B6qBNE*$K$O$I$3$,0[$J$k$N$G$7$g$&$+!#(B
$B;d$NG’<1$O0J2<$NDL$j$G$9!#(B
- XML$B$N%(%s%3!<%G%#%s%0$O(BIANA$B$KEPO?$5$l$F$$$k(Bchaset$BL>$r%Y!<%9(B
$B$K$7$F$$$k!#(Bx-$B$O$8$^$j$N$b$N$J$I$b;H$($^$k$,!"(BREXML$B$G$O(B
$B%5%]!<%HBP>]30!#(B
$B7zA0$O$=$&$G$9!#(B
$B$7$+$7!“8=<BLdBj$H$7$F$O(B ISO-8859-1 $B$H>N$7$D$DCf?H$O(B
Windows-1252 [email protected]$C$?$j$7$^$9!#(B
($BNc$($PL$;HMQ$G$”$k$O$:$N(B 0x80
$B$,$J$<$+;H$o$l$F$$$F!"$=$l$,%f!<%m5-9f$r4|BT$7$F$$$k(B)
$BF|[email protected]$($P1_5-9fLdBj$dGH%@%C%7%eLdBj$,$=$&$G$9$J!#(B
$BNr;KE7P0^[email protected]@$9$k$H!“Ev=i$N(B IANA Charsets
$B$O>pJs8r49MQId9f$NL>[email protected]$C$?$N$G!”(B
$B$=$NFbMF$K$D$$$F>:Y$J9g0U$O<h$i$l$F$$$^$;$s$G$7$?!#(B
charset
$B$H$$$&L>A0<+BN$,!“Id9f2=J8;z=89g$HJ8;zId9f2=J}<0$,J,2=$9$kA0$N$b$N(B
$B$G$”$k$3$H$rJ[email protected]$($^$9!#(B
ISO-8859-1 $B$H(B Windows-1252 $B$N0c$$$d!"(BEUC-JP $B$,4^$`Jd=u4A;z$r(B
CP51932 $B$,4^$^$J$$(B
$B$3$H$b$3$NJU$N0l4D$G$7$g$&!#(B
$B$G!“8=<[email protected]$($P!”%$%s%?!<%M%C%H>e$K$*$$$F$[$H$s$I$N%G!<%?$O(B
Windows $B%Y!<%9$N(B
$B$b$N$H$J$C$F$$$^$9!#$^$?!"(BWindows
$B$N%G%U%!%/%H2=$K$D$i$l$F%$%s%?!<%M%C%H4XO"$N(B
$B%=%U%H%&%’%"$O(B Windows $B$NDj5A$K$"$o$;$k$h$&$K$J$j$D$D$"$j$^$9!#(B
$B$^$?!"(BUnicode
$BEP>l;~$K4{B8$NJ8;z%3!<%I$H$NJQ49I=$rE}0l$9$k$3$H$K<:GT$7$?;v$b(B
$BPN%$rA}Bg$5$;$F$$$^$9!#F|K$K$$$$F$OGH%@%C%7%eLdBj$,$=$l$G$9!#(B
$B$3$A$i$b!“JQ49I=$r(B Windows $B$K$”$o$;$k$3$H$K$J$j$D$D$"$j$^$9!#(B
$B0J>e$r$^$H$a$k$H!"!V(BIANA Charsets
$B$K$$1$kL>[email protected]<0$JDj5A!W$H!"(B
Windows $BM3Mh$N%G%U%!%/%H$OPN%$7$F$$$k!"[email protected]$&$3$H$K$J$j$^$9!#(B
$B6qBNE*$K$I$N(B charset $B$,P*N%$7!"$=$N<BBV$O2?$J$N$+$O(B HTML5
$B$N?M!9$,$^$H$a$F$$$^$9!#(B
http://www.w3.org/TR/html5/parsing.html#character-encodings-0
$B$G!"(BREXML $B$N07$&(B XML
$B%G!<%?$,%$%s%?!<%M%C%H>e$N%G!<%[email protected]<0$JDj5A$+$iP*N%$7$F$$$k$+!"(B
$B$,[email protected]@$G$9$,!"(BREXML $B$N<g$?$kMQES$,(B RSS $B$G!"(BRSS
$B$N%G!<%?85$,(B blog $BEy$N(B Web $BG^BN$G!"(B
$B$=$l$i$,85!9$O(B Web
$B%V%i%&%67PM3$GF~NO$5$l$F$$$k$G$"$m$&;v$r9M$($k$H!"(B
$B>e=R$N>u67$HF1$8$J$s$8$c$J$$$G$9$+$M!#(B
- Ruby$B$N(BEncoding$B$b(BIANA$B$r%Y!<%9$K$7$F$$$k!#(B
$B!V%Y!<%[email protected]$7$$$s$G$9$,!"(BRuby $B$G$O(B IANA
$B$N$"$kL>>N$N<BAu$K$O!"(B
[email protected]<0$JDj5A$r0lCW$5$;!"%G%U%!%/%H$KBP$7$F$O(B Windows
$BM3Mh$NL>A0$rM?$($F$$$^$9!#(B
$BNc$($P!"(BISO-8859-1 $B$H(B Windows-1252$B!"(BShift_JIS $B$H(B
Windows-31J$B!"(B
EUC-JP $B$H(B CP51932 $B$J$I$G$9!#(B
$B$J$N$G!“0lO”$NL>>N72$N6u4V$O0lCW$7$F$$$^$9$,!“0UL#$E$1$K$:$l$,$”$j$^$9!#(B
[email protected]$r?=$7$^$9$H!"$3$N0c$$$O>pJs8r49MQId9f$HFbIt=hM}[email protected]$C$?$j$7$^$9!#(B
$B$J$N$G!"(BREXML$B$G;H$&HO0O$G$O==J,%+%P!<$7$F$$$k$HG’<1$7$F$$$^$9!#(B
$B$H$$$&$o$1$G!"35$MHO0O$H$7$F$O%+%P!<$5$l$F$$$k$N$G$9$,!"0UL#[email protected]$,0c$&$o$1$G$9!#(B
$B%+%P!<$7$-$l$F$J$$Nc$r5s$2$k$H!"Nc$($P(B UTF-16 $B$H$+$G$9$+!#(B
$B$b$C$H$b!"$3$3$G=R$Y$?0c$$$r(B REXML
$B$G$^$H$b$K07$&$+$O$^$?JL$NOC$G$9!#(B
[email protected]!"$3$l$O(Biconv$B$rMxMQ$7$F$$$k>l9g$G(Biconv$B$,$J$$>l9g$O(BBOM$B$J(B
$B$7$K$J$C$F$$$?$O$:$G$9!#(B
$B:#$N$^$^$G$b(BBOM$B$r$D$1$k$/$i$$4JC1$J$N$G!“I,MW$G$”$l$P$D$1$F(B
$B$7$^$C$F$b$$$$$H$O;W$C$F$$$^$9!#(B
BOM $B$r$D$1$k>l9g$O(B encoding $B$O(B UTF-16 $B$G$J$1$l$P$$$1$^$;$s!#(B
$B0lJ}$G!"(BUTF-16BE $B$rL>>h$k$J$i$P$=$l$K(B BOM
$B$r$D$1$F$O$$$1$^$;$s!#(B
$B$3$l$N7k2L$O!"8=:_0J2<$NDL$j$K$J$C$F$7$^$C$F$$$^$9!#(B
=> “<?xml version='1.0' encoding='UTF-16'?>”
$B$3$N$h$&$KI=<($5$l$k$N$OE,@Z$K(Bencoding$B$,@_Dj$9$k$h$&$K$J$C$?(B
[email protected]$H;W$C$F$$$^$9!#([email protected]$H$A$c$s$H(BUTF-16BE$B$,@_Dj$5$l$F$$(B
$B$F!J$J$N$G(B\xXX$B$K$J$i$J$$$GI=<($5$l$k!K!"0JA0$O!J(BUTF-16$B$J$N(B
$B$K!K(BUTF-8$B$,@_Dj$5$l$F$$$?$H;W$$$^$9!#(B
$BI=<(7k2L$K4X$7$F$O3N$+$K$4;XE&$NDL$j$G$9!#(B
$B$3$l$G!"(Bencoding=‘UTF-16BE’
$B$J$i$P$3$N7k2LC1BN$OLdBj$"$j$^$;$s$M!#(B
$B$3$l$K$h$C$F!">/$J$/$H$b(B XMLDecl#encoding $B$NLa$jCM$N0UL#$O!"(B
XML [email protected]@$N(B encoding [email protected]$GMQ$$$i$l$kCM$G$"$C$F!"FbMF$N(B Ruby
$B$NJ8L.$K$*$1$k(B
encoding $B$H$O0[$J$kJ*$G$"$k$H$$$($k$N$G$O$J$$$G$7$g$&$+!#(B
$B$9$_$^$;$s!"!VFbMF$N(B Ruby $B$NJ8L.$K$*$1$k(B encoding$B!W$,2?$r;X$7(B
$B$F$$$k$N$+$,J,$+$j$^$;$s$G$7$?!#%F%-%9%H$N(Bencoding$B$H$+!"$=$&(B
$B$$$&0UL#$G$9$+!)(B
$B6qBNNc$G$9$HNc$($P!"(B
‘<xml version=“1.0” encoding=“Shift_JIS”?>’.encode(“Windows-31”)
$B$H$+!#$3$3$G$N!VFbMF$N(B Ruby $B$NJ8L.$K$*$1$k(B encoding$B!W$O(B
Windows-31J $B$G$9!#(B
$B$=$&[email protected]$H$7$F!"0[$J$k>l9g$O$I$&$7$?J}$,$h$$$H(B
$B$$$&$3$H$G$7$g$&$+!#(B
XMLDec#encoding $B$OJ8;zNs$K$7$F!"(BXML [email protected]@$KF~$C$F$$$k$b$N$r(B
$B$=$N$^$^;H$&$Y$-$G$9!#(B
$B$A$J$_$K!"!V(BXMLDecl#encoding $B$NLa$jCM$N0UL#$O!"!W(BXML$B$H$7$FJ8(B
$B;zNs2=$7$?$H$-$K;H$o$l$k(Bencoding$B$G$b$"$j$^$9!#$^$H$a$k$H!":#(B
$B$O$3$&$J$C$F$$$k$H;W$C$F$$$^$9!#(B
- REXML$B$N%*%V%8%’%/%H$r:n$k$H$-$N(Bencoding$B$O([email protected]@$G;XDj(B
- REXML$B$N%*%V%8%’%/%H$rA`:n$9$k$H$-$NF~=PNO$O(BUTF-8
- REXML$B$N%*%V%8%’%/%H$r(BXML$B$H$7$F=PNO$9$k;~$O(BXMLDecl#encoding
$B!V(BXML$B$H$7$FJ8;zNs2=$7$?$H$-$K;H$o$l$k(Bencoding$B!W$,>e=R$N!"(B
$B!VFbMF$N(B Ruby $B$NJ8L.$K$$1$k(B encoding$B!W$G$9!#(B
$B$G!"$3$l$O(B XMLDecl#encoding
$B$H$OJ,N%$9$kI,MW$,$"$j$^$9!JD94|E$K$O!K!#(B
$B$=$3$^$G$d$i$J$$>l9g$O(B XMLDecl#encoding $BB&$K(B
$B!V(BXML$B$H$7$FJ8;zNs2=$7$?$H$-$K;H$o$l$k(Bencoding$B!W$r$"$o$;$k$Y$-$G$9!#(B
[email protected]$$49$($k$H!"(B
- $B>pJs8r49MQId9fB&$KFbIt=hM}MQId9f$r$"$o$;$k$Y$-(B
- XML $B$N8x>N$7$F$$$k%(%s%3!<%G%#%s%0L>$K$"$o$;$k$Y$-(B
- Ruby $B$N(B Encoding
$B%*%V%8%’%/%H$G$J$/!"%(%s%3!<%G%#%s%0L>$rJ8;zNs$N$^$^;H$&$Y$-(B
$B$J$I$H$J$j$^$9!#(B
$B$=$b$=$b!"(BUTF-16 $B$N>l9g(B UTF-8 $B$KJQ49$7$F07$&$7!#(B
UTF-16$B0J30$N>l9g$G$b(BREXML$BFbIt$G$O>o$K(BUTF-8$B$G07$C$F$$$^$9!#(B
$B6D$k$H$*$j$G$9!#(B
$B$&!<$s!">e=R$NM}M3$r<u$1F~$l$i$l$J$$$N$OJL$H$7$F$b!"$=$NL>A0(B
$B$O<u$1F~$l$i$l$J$$$G$9!#E,@Z$G$J$$>l=j$K$O$_=P$7$F$7$^$C$?46(B
$B$8$,$7$^$9!#(B
Encoding $B%%V%8%’%/%H%P!<%8%g%s$,I,MW$J$N$O!">e=R$N(B
REXML
$B%%V%8%’%/%H$+$i(BXML$B%=!<%9J8;zNs$KJQ49$9$k:]$KMQ$$$k%(%s%3!<%G%#%s%0$r!"(B
XML [email protected]@$N(B encoding [email protected]$NCM$H$OJL$K;}$AB3$1$?$$>l9g$NOC$J$N$G!"(B
$BKAF,$K=R$Y$?(B IANA Charsets $B$NDj5A$H(B Ruby
$B$N3F%(%s%3!<%G%#%s%0$NDj5A$N0c$$$r(B
$BCV$$$F$*$/$N$G$"$l$PITMW$G$9$M!#(B
$B$^$?!"(BXML $B%=!<%9$KJQ49$9$k:]$KJL$KM?$($k$H$$$&J}K!$b$"$j$^$9!#(B