ISO-2022-JP output for transcode

成瀬です。

transcode を ISO-2022-JP の出力に対応させるパッチを書いてみました。同様
に preprocessor で入力にも対応できますし、ISO-2022-JP 以外の ISO/IEC
2022 シリーズにも対応できるようになっています。

Martinさんの考えている方向とは違っているかもしれませんが、とりあえずクリ
スマスリリースに入れる程度の品質は出ると思いますがいかがでしょう。

e$B$J$+$@$G$9!#e(B
n
At Mon, 24 Dec 2007 10:10:28 +0900,
NARUSE, Yui wrote in [ruby-dev:32695]:

transcode e$B$re(B ISO-2022-JP e$B$N=PNO$KBP1~$5$;$k%Q%C%A$r=q$$$F$_$^$7$?!#F1MMe(B
e$B$Ke(B preprocessor e$B$GF~NO$K$bBP1~$G$-$^$9$7!"e(BISO-2022-JP e$B0J30$Ne(B ISO/IEC
2022 e$B%7%j!<%:$K$bBP1~$G$-$k$h$&$K$J$C$F$$$^$9!#e(B

e$B$G$-$l$P!"e(Btranscode_data_japanese.ce$B$N$[$&$K$*4j$$$7$?$$$G$9!#e(B

Martine$B$5$s$N9M$($F$$$kJ}8~$H$O0c$C$F$$$k$+$b$7$l$^$;$s$,!"$H$j$"$($:%/%je(B
e$B%9%^%9%j%j!<%9$KF~$l$kDxEY$NIJ<A$O=P$k$H;W$$$^$9$,$$$+$,$G$7$g$&!#e(B

e$B%.%j%.%j$G$9$,!"4V$K9g$($P$3$&$$$&Iw$K$7$?$$$H;W$C$F$$$^$9!#e(B

transcode_data_*.ce$B$re(Benc/trans/e$B$K0\F0$5$;$k!#@h$[$Ie(Benc/trans/e$B$Ne(B
e$B2<$be(Benc.mke$B$G=hM}$G$-$k$h$&$K$7$^$7$?!#e(B

transcode_data_one_byte.ce$B$H$$$&L>A0$O$o$+$j$K$/$$$N$G!"e(B

japanese.ce$B$HF1$8EA$G$$$($Pe(Beuropean.ce$B$+$J$!$H;W$C$?$j$7$^$9$,!#e(B

  • MAX_TRANSCODERSe$B$N@)8B$r$J$/$9e(B

    e$B$H$$$&$+!"$3$N%Q%C%A$@$H%*!<%P!<$7$F$^$;$s$+e(B?

  • transcode_data_*.ce$B$r3HD%%i%$%V%i%j7A<0$K$9$k!#e(B
    e$BI,MW$J9=B$BN$H%W%m%H%?%$%W$r%X%C%@$KF~$l$F!"3Fe(Btranscodere$B$G$Oe(B
    Inite$B4X?t$rDI2C$9$k$3$H$K$J$j$^$9!#e(B

e$B$A$g$C$He(BMartine$B@h@8$NJ}?K$,$o$+$i$J$$$N$G!"$3$l$O4V$K9g$o$J$$e(B

e$B$+$b!#e(B

成瀬です。

ISO-2022-JP ã®å…¥åŠ›ã‚’åŠ ãˆãŸãƒ‘ãƒƒãƒã§ã™ã€‚ã“ã‚Œã‚‚ã¾ã ã™ã¹ã¦ transcode.c に
つっこんでいます。

Martin D. wrote:

こちらでもいいです。
transcode_data_japanese.c は自動生成な気がしたのと、transcode.c ã®æ§‹é€ ä½“
に依存しているので、下手に分けずにとりあえず transcode.c に入れておきま
した。
transcoding と transcoder を transcode_data.h いれればいいのですかね。作
業しつつとりあえずこの状態で投稿しておきます。

とりあえずクリ
スマスリリースに入れる程度の品質は出ると思いますがいかがでしょう。

リリースにいれていいですが、明日とか明後日当たりで HEAD でまだ取り出し、
違う方針でよかったらいいですよ。

とりあえず 1.9.1 でも ISO-2022-JP が動いてほしかったからなので、それで結
構です。

transcode_data_one_byte.cという名前はわかりにくいので、

japanese.cと同じ伝でいえばeuropean.cかなぁと思ったりしますが。

こちらでもそう思いましたが、iso-8859-6 はアラビア語で、iso-8859-8
はヘブライ語で、iso-8859-11 はタイ語で、どちらともヨーロッパと
縁が薄いです。しばらくそのままいいではないでしょうか。

iso_8859.c じゃないかなぁと。

  • MAX_TRANSCODERSの制限をなくす

というか、このパッチだとオーバーしてませんか?

外してもいいですが、余り大きな変更はしない方がいいと思います。

オーバーしていますね。

   register_transcoder("ISO-8859-1",  "UTF-8", &rb_from_ISO_8859_1, 2, 0, "transcode_data_one_byte");
  • transcoder が呼ばれたら、データのファイルをロードする。

一応参考までに他の実装ですが、
Citrus iconv は 文字コードの一覧を

EUC

EUC-CN EUC/EUC-CN.esdb
EUC-JP EUC/EUC-JP.esdb
EUC-JP-MS EUC/EUC-JP-MS.esdb
EUC-KR EUC/EUC-KR.esdb
EUC-TW EUC/EUC-TW.esdb
という形で持っておいて、呼ばれたら読みに行っていたような。

Perl/Encode は拡張ライブラリ方式でした。ある拡張ライブラリを読み込むと、
それが対応している文字コードの変換がサポートされます。そして、デフォルト
で読み込む、文字コード変換拡張ライブラリをいくつか登録されていました。
ï¼ˆãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§èª­ã¿è¾¼ã‚€æ–‡å­—ã‚³ãƒ¼ãƒ‰å¤‰æ›ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯ãƒ¦ãƒ¼ã‚¶ãŒå¾Œã§è¿½åŠ å¯èƒ½ï¼‰

Martin さんが考えていらっしゃるのはおそらく Citrus に近い方式で、なかã
さんが考えていらっしゃるのは Perl/Encode に近い方式でしょうか。Citrus 方
式だと各変換を最適化しやすく、Perl/Encode ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®è¿½åŠ ãŒã—ã‚„ã™ã‹ã£
たように記憶しています。

e$B@.@%$5$s!“CfED$5$s!”$3$s$K$A$O!#e(B

e$B:G8e$^$G?'!9Ds0F$r$7$F$$$?$@$$$F$I$&$b$"$j$,$H$&$4$6$$$^$9!#e(B

At 13:04 07/12/24, Nobuyoshi N. wrote:

e$B$J$+$@$G$9!#e(B
n
At Mon, 24 Dec 2007 10:10:28 +0900,
NARUSE, Yui wrote in [ruby-dev:32695]:

transcode e$B$re(B ISO-2022-JP e$B$N=PNO$KBP1~$5$;$k%Q%C%A$r=q$$$F$_$^$7$?!#F1MMe(B
e$B$Ke(B preprocessor e$B$GF~NO$K$bBP1~$G$-$^$9$7!"e(BISO-2022-JP e$B0J30$Ne(B ISO/IEC
2022 e$B%7%j!<%:$K$bBP1~$G$-$k$h$&$K$J$C$F$$$^$9!#e(B

e$B$G$-$l$P!"e(Btranscode_data_japanese.ce$B$N$[$&$K$*4j$$$7$?$$$G$9!#e(B

e$B$3$l$O<+F0E*$K:n@.$7$F$$$k$N$G!“M>$j9%$^$7$/$J$$$G$9!#$G$be(B
(e$B2<$N$h$&$K$?$$$F$”$j$^$9$h$&$Ke(B) e$BL$$@JQ99$9$kM=Dj$J$N$G!"e(B
e$B$3$A$i$G$b$$$$$G$9!#e(B

Martine$B$5$s$N9M$($F$$$kJ}8~$H$O0c$C$F$$$k$+$b$7$l$^$;$s$,!"e(B

e$B3N$+$K$=$&$G$9$M!#e(B

e$B$H$j$"$($:%/%je(B
e$B%9%^%9%j%j!<%9$KF~$l$kDxEY$NIJ<A$O=P$k$H;W$$$^$9$,$$$+$,$G$7$g$&!#e(B

e$B%j%j!<%9$K$$$l$F$$$$$G$9$,!"L@F|$H$+L@8eF|Ev$?$j$Ge(B HEAD
e$B$G$^$@<h$j=P$7!"e(B
e$B0c$&J}?K$G$h$+$C$?$i$$$$$G$9$h!#e(B

e$B%.%j%.%j$G$9$,!"4V$K9g$($P$3$&$$$&Iw$K$7$?$$$H;W$C$F$$$^$9!#e(B

  • transcode_data_*.ce$B$re(Benc/trans/e$B$K0\F0$5$;$k!#@h$[$Ie(Benc/trans/e$B$Ne(B
    e$B2<$be(Benc.mke$B$G=hM}$G$-$k$h$&$K$7$^$7$?!#e(B

e$B$3$N0\F0$O$3$l$G$$$$$G$9!#0JA0$K$b$=$&$$$&J}8~$GOC$7$^$7$?$h$M!#e(B

transcode_data_one_byte.ce$B$H$$$&L>A0$O$o$+$j$K$/$$$N$G!"e(B

japanese.ce$B$HF1$8EA$G$$$($Pe(Beuropean.ce$B$+$J$!$H;W$C$?$j$7$^$9$,!#e(B

e$B$3$A$i$G$b$=$&;W$$$^$7$?$,!“e(Biso-8859-6
e$B$O%”%i%S%"8l$G!"e(Biso-8859-8
e$B$O%X%V%i%$8l$G!“e(Biso-8859-11
e$B$O%?%$8l$G!”$I$A$i$H$b%h!<%m%C%Q$He(B
e$B1o$,Gv$$$G$9!#$7$P$i$/$=$N$^$^$$$$$G$O$J$$$G$7$g$&$+!#e(B

  • MAX_TRANSCODERSe$B$N@)8B$r$J$/$9e(B

e$B$H$$$&$+!"$3$N%Q%C%A$@$H%*!<%P!<$7$F$^$;$s$+e(B?

e$B30$7$F$b$$$$$G$9$,!"M>$jBg$-$JJQ99$O$7$J$$J}$,$$$$$H;W$$$^$9!#e(B

  • transcode_data_*.ce$B$r3HD%%i%$%V%i%j7A<0$K$9$k!#e(B
    e$BI,MW$J9=B$BN$H%W%m%H%?%$%W$r%X%C%@$KF~$l$F!"3Fe(Btranscodere$B$G$Oe(B
    Inite$B4X?t$rDI2C$9$k$3$H$K$J$j$^$9!#e(B

e$B$3$A$i$G$O<!$N$h$&$K9M$($^$7$?e(B:

  • transcoder e$B$NEPO?$re(B transcode.c e$B$K;D$9!#e(B
  • e$BEPO?$N:]!"%U%!%$%kL>$bEPO?$9$k!#e(B
    (e$BNce(B:
    register_transcoder(“ISO-8859-1”, “UTF-8”, &rb_from_ISO_8859_1,
    2, 0);
    e$B$NJQ$o$je(B
    register_transcoder(“ISO-8859-1”, “UTF-8”, &rb_from_ISO_8859_1,
    2, 0, “transcode_data_one_byte”);
  • transcoder e$B$,8F$P$l$?$i!"%G!<%?$N%U%!%$%k$r%m!<%I$9$k!#e(B

Ruby
e$B$NF0E*%m!%I$r$^$@M$jJ,$+$j$^$;$s$N$G!“$3$NJ}8~$G$&$^$/$$$/$+$I$&$+e(B
e$BJ,$+$j$^$;$s$,!#$G$b$3$l$@$H%U%!%$%k$rA}$d$5$J$/$F$h$$$H$$$&FCD9$,$”$j$^$9!#e(B
e$BBh;0<T$,J8;z%3!<%IJQ49$rDI2C$7$?$$$H$-$K$O2?$+$N$H$3$m$+$iF1$8$/e(Bregister
e$B$9$l$P$$$$$G$9$,!"$3$l$O8e$G9M$($F$$$$$G$9!#e(B

e$B$A$g$C$He(BMartine$B@h@8$NJ}?K$,$o$+$i$J$$$N$G!"$3$l$O4V$K9g$o$J$$e(B

e$B$+$b!#e(B

e$BJ}?K$O>e5-$NDL$j$G$9!#CfED$5$s$N%9%T!<%I$@$C$?$i4V$K9g$&2DG=@-$,e(B
e$B$"$k$+$b$7$l$^$;$s!#e(B

e$B59$7$/$*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:[email protected]

e$B$J$+$@$G$9!#e(B

At Mon, 24 Dec 2007 14:11:22 +0900,
Martin D. wrote in [ruby-dev:32697]:

  • transcode_data_*.ce$B$re(Benc/trans/e$B$K0\F0$5$;$k!#@h$[$Ie(Benc/trans/e$B$Ne(B
    e$B2<$be(Benc.mke$B$G=hM}$G$-$k$h$&$K$7$^$7$?!#e(B

e$B$3$N0\F0$O$3$l$G$$$$$G$9!#0JA0$K$b$=$&$$$&J}8~$GOC$7$^$7$?$h$M!#e(B

e$B:3:Y$JE@$G$9$,!“e(Bone_bytee$B$H$$$&I=8=$O$”$^$jJ9$$$?$3$H$,$"$j$^$;$s!#e(B
MBCSe$B$KBPHf$5$;$k$J$i!"e(BSBCSe$B$^$?$Oe(Bsingle_bytee$B$G$O$J$$$+$H;W$$$^$9!#e(B

transcode_data_one_byte.ce$B$H$$$&L>A0$O$o$+$j$K$/$$$N$G!"e(B

japanese.ce$B$HF1$8EA$G$$$($Pe(Beuropean.ce$B$+$J$!$H;W$C$?$j$7$^$9$,!#e(B

e$B$3$A$i$G$b$=$&;W$$$^$7$?$,!“e(Biso-8859-6 e$B$O%”%i%S%"8l$G!"e(Biso-8859-8
e$B$O%X%V%i%$8l$G!“e(Biso-8859-11 e$B$O%?%$8l$G!”$I$A$i$H$b%h!<%m%C%Q$He(B
e$B1o$,Gv$$$G$9!#$7$P$i$/$=$N$^$^$$$$$G$O$J$$$G$7$g$&$+!#e(B

e$B$=$l$O$`$7$me(Benc/trans/{arabic,thai,hebrew}.ce$B$H$+$KJ,$1$?$[$&$,$$e(B
e$B$$$N$G$O!#e(B

  • MAX_TRANSCODERSe$B$N@)8B$r$J$/$9e(B

e$B$H$$$&$+!"$3$N%Q%C%A$@$H%*!<%P!<$7$F$^$;$s$+e(B?

e$B30$7$F$b$$$$$G$9$,!"M>$jBg$-$JJQ99$O$7$J$$J}$,$$$$$H;W$$$^$9!#e(B

e$B0JA0=P$7$?%O%C%7%e$r;H$&J}K!$O$I$&$G$7$g$&$+!#e(B

   register_transcoder("ISO-8859-1",  "UTF-8", &rb_from_ISO_8859_1, 2, 0, "transcode_data_one_byte");

e$B%m!<%IA0$Ke(Brb_from_ISO_8859_1e$B$J$I$N%]%$%s%?$r;H$&$o$1$K$O$$$-$^$;e(B
e$B$s$+$ie(B
rb_define_transcoder(“ISO-8859-1”, “UTF-8”, “single_byte”);
e$B$J$I$N$h$&$KBP1~$9$ke(Bencodinge$BL>$H%i%$%V%i%jL>$r;H$&$3$H$K$J$k$H;W$$$^$9!#e(B

e$B@.@%$5$s!"$3$s$K$A$O!#e(B

At 15:30 07/12/24, NARUSE, Yui wrote:

e$B$Ke(B preprocessor e$B$GF~NO$K$bBP1~$G$-$^$9$7!"e(BISO-2022-JP e$B0J30$Ne(B ISO/IEC
2022 e$B%7%j!<%:$K$bBP1~$G$-$k$h$&$K$J$C$F$$$^$9!#e(B
e$B$G$-$l$P!"e(Btranscode_data_japanese.ce$B$N$[$&$K$*4j$$$7$?$$$G$9!#e(B

e$B$3$l$O<+F0E*$K:n@.$7$F$$$k$N$G!“M>$j9%$^$7$/$J$$$G$9!#$G$be(B
(e$B2<$N$h$&$K$?$$$F$”$j$^$9$h$&$Ke(B) e$BL$$@JQ99$9$kM=Dj$J$N$G!"e(B
e$B$3$A$i$G$b$$$$$G$9!#e(B

transcode_data_japanese.c e$B$O<+F0@8@.$J5$$,$7$?e(B

e$B$^$5$K$=$&$G$9!#e(B

e$B$N$H!"e(Btranscode.c e$B$N9=B$BNe(B
e$B$K0MB8$7$F$$$k$N$G!“2<<j$KJ,$1$:$K$H$j$”$($:e(B transcode.c e$B$KF~$l$F$$-$^e(B
e$B$7$?!#e(B
transcoding e$B$He(B transcoder e$B$re(B transcode_data.h e$B$$$l$l$P$$$$$N$G$9$+$M!#:ne(B
e$B6H$7$D$D$H$j$"$($:$3$N>uBV$GEj9F$7$F$
$-$^$9!#e(B

e$B0JA0$KCfED$5$s$K=q$-$^$7$?$,!"e(Btranscode_data.h
e$B$O%G!<%?%U%!%$%ke(B
e$B$He(B transcode.c e$B$N4V$N$b$N$@$1$G$9!#>-Mh$K$O$3$l$HJLES$Ke(B
transcode.h
e$B$r:n$kM=Dj$G$9!#e(B

japanese.ce$B$HF1$8EA$G$$$($Pe(Beuropean.ce$B$+$J$!$H;W$C$?$j$7$^$9$,!#e(B

e$B$3$A$i$G$b$=$&;W$$$^$7$?$,!“e(Biso-8859-6 e$B$O%”%i%S%"8l$G!"e(Biso-8859-8
e$B$O%X%V%i%$8l$G!“e(Biso-8859-11 e$B$O%?%$8l$G!”$I$A$i$H$b%h!<%m%C%Q$He(B
e$B1o$,Gv$$$G$9!#$7$P$i$/$=$N$^$^$$$$$G$O$J$$$G$7$g$&$+!#e(B

iso_8859.c e$B$8$c$J$$$+$J$!$H!#e(B

e$B0JA0$Oe(B transcode_data_iso_8859.c e$B$G$7$?$,!">-Mh$KNc$($Pe(B
windows-… e$B$H$+DI2C$9$kM=Dj$J$N$G!"L>A0$rJQ$($^$7$?!#e(B

  • MAX_TRANSCODERSe$B$N@)8B$r$J$/$9e(B

e$B$H$$$&$+!"$3$N%Q%C%A$@$H%*!<%P!<$7$F$^$;$s$+e(B?

e$B30$7$F$b$$$$$G$9$,!"M>$jBg$-$JJQ99$O$7$J$$J}$,$$$$$H;W$$$^$9!#e(B

e$B%*!<%P!<$7$F$$$^$9$M!#e(B

e$B0lHV4JC1$J$N$Oe(B MAX_TRANSCODERS e$B$r9g$o$;$9$H$$$&$3$H$G$9!#e(B
e$B<j:n6H$J$N$G$A$g$C$H$3$o$$$1$I!#e(B

   register_transcoder("ISO-8859-1",  "UTF-8", &rb_from_ISO_8859_1, 

EUC-TW EUC/EUC-TW.esdb
e$B$H$$$&7A$G;}$C$F$*$$$F!"8F$P$l$?$iFI$_$K9T$C$F$$$?$h$&$J!#e(B

e$B;w$?$h$&$J9=B$$_$?$$$G$9$M!#$3$A$i$G9M$($F$$$k%G!<%?9=B$$@$He(B
e$BF|K\8l$NJ8;z%3!<%IF1;N$G$O6&DL$9$k%G!<%?$,$$$C$Q$$$"$j$^$9$N$G!"e(B
e$BF1$8%U%!%$%k$K$9$k$3$H$K$J$j$^$9!#e(B

Perl/Encode e$B$O3HD%%i%$%V%i%jJ}<0$G$7$?!#$"$k3HD%%i%$%V%i%j$rFI$_9~$$H!"e(B e$B$=$l$,BP1~$7$F$$$kJ8;z%3!<%I$NJQ49$,%5%]!<%H$5$l$^$9!#$=$7$F!"%G%U%)%k%He(B e$B$GFI$_9~$!"J8;z%3!<%IJQ493HD%%i%$%V%i%j$r$$$/$D$+EPO?$5$l$F$$$^$7$?!#e(B
e$B!J%G%U%)%k%H$GFI$_9~$`J8;z%3!<%IJQ49%i%$%V%i%j$O%f!<%6$,8e$GDI2C2DG=!Ke(B

e$BCfED$5$s$H9M$($?$N$Oe(B require
e$B$OI,MW$J$$$h$&$K$7$?$$$H$$$&$3$H$G$9!#e(B
e$BL^O@>-MhE*$K%f!<%6!<$,<+J,$GDI2C$7$?$$$H$-$O$“$k$@$m$&$+$i$3$l$K$be(B
e$BBP1~$7$?$$$G$9$,!”@h$:$O%j%j!<%9$N8e$KJ8;z%3!<%I$N?t$rA}$d$9$3$H$G$9!#e(B

Martin e$B$5$s$,9M$($F$$$i$C$7$c$k$N$O$*$=$i$/e(B Citrus e$B$K6a$$J}<0$G!"$J$+$@e(B
e$B$5$s$,9M$($F$$$i$C$7$c$k$N$Oe(B Perl/Encode e$B$K6a$$J}<0$G$7$g$&$+!#e(BCitrus e$BJ}e(B
e$B<0$@$H3FJQ49$r:GE,2=$7$d$9$/!"e(BPerl/Encode e$B$O%b%8%e!<%k$NDI2C$,$7$d$9$+$Ce(B
e$B$?$h$&$K5-21$7$F$$$^$9!#e(B

e$B$3$A$i$G$O!V3FJQ49!W$h$j$b!V;w$?$h$&$JJQ49F1;N!W$N:GE,2=$KNO$rF~$l$h$&$He(B
e$B;W$C$F$$$^$9!#e(B

e$B59$7$/$*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:[email protected]

At 17:08 07/12/24, Nobuyoshi N. wrote:

MBCSe$B$KBPHf$5$;$k$J$i!"e(BSBCSe$B$^$?$Oe(Bsingle_bytee$B$G$O$J$$$+$H;W$$$^$9!#e(B
e$B3N$+$K$*$C$7$c$kDL$j$G$9!#e(B

transcode_data_one_byte.ce$B$H$$$&L>A0$O$o$+$j$K$/$$$N$G!"e(B

japanese.ce$B$HF1$8EA$G$$$($Pe(Beuropean.ce$B$+$J$!$H;W$C$?$j$7$^$9$,!#e(B

e$B$3$A$i$G$b$=$&;W$$$^$7$?$,!“e(Biso-8859-6 e$B$O%”%i%S%"8l$G!"e(Biso-8859-8
e$B$O%X%V%i%$8l$G!“e(Biso-8859-11 e$B$O%?%$8l$G!”$I$A$i$H$b%h!<%m%C%Q$He(B
e$B1o$,Gv$$$G$9!#$7$P$i$/$=$N$^$^$$$$$G$O$J$$$G$7$g$&$+!#e(B

e$B$=$l$O$`$7$me(Benc/trans/{arabic,thai,hebrew}.ce$B$H$+$KJ,$1$?$[$&$,$$e(B
e$B$$$N$G$O!#e(B

e$B$o$5$o$5e(B european
e$B$+$iJ,$1$kI,MW$,$"$j$^$;$s!#$I$&$$$&Iw$KJ,$1$k$N$,e(B
e$B$$$$$N$+$J$N$O$3$l$+$i$NOC$G$9$7!#e(B

  • MAX_TRANSCODERSe$B$N@)8B$r$J$/$9e(B

e$B$H$$$&$+!"$3$N%Q%C%A$@$H%*!<%P!<$7$F$^$;$s$+e(B?

e$B30$7$F$b$$$$$G$9$,!"M>$jBg$-$JJQ99$O$7$J$$J}$,$$$$$H;W$$$^$9!#e(B

e$B0JA0=P$7$?%O%C%7%e$r;H$&J}K!$O$I$&$G$7$g$&$+!#e(B

e$BFs=E%O%C%7%e$NOC$b$“$j$^$7$?$,!”$3$l$Oe(B
utf-8 → e$B2?$+e(B e$B$He(B
e$B2?$+e(B → utf-8
e$B$NFs%Q%C%?!<%s$,$[$H$s$I$J$N$G$A$g$C$H0UL#$,$"$j$^$;$s!#e(B
e$B$=$&$9$k$HCfED$5$s$,=P$7$?=PH/E@$HE~CeE@$NJ8;z%3!<%I$r2?$+$NJ8;z$re(B
e$B64$s$G$/$D$$$F%O%C%7%e80$K$9$k$N$OBEEv$G$7$g$&!#e(B

   register_transcoder("ISO-8859-1",  "UTF-8", &rb_from_ISO_8859_1, 

2, 0, “transcode_data_one_byte”);

e$B%m!<%IA0$Ke(Brb_from_ISO_8859_1e$B$J$I$N%]%$%s%?$r;H$&$o$1$K$O$$$-$^$;e(B
e$B$s$+$ie(B

e$B$J$k$[$I!"$=$&$G$9$h$M!#e(B

rb_define_transcoder(“ISO-8859-1”, “UTF-8”, “single_byte”);
e$B$J$I$N$h$&$KBP1~$9$ke(Bencodinge$BL>$H%i%$%V%i%jL>$r;H$&$3$H$K$J$k$H;W$$$^$9!#e(B

e$B$=$&$9$k$H;D$j$N>pJs$O$I$&$$$C$?;EAH$_$GDI2C$5$l$kM=Dj$G$7$g$&$+!#e(B
e$B0JA0$NOC$@$HJQ49$4$H$K%U%!%$%k$,I,MW$G$7$?$,!"$3$lL5$7$G$b$G$-$k$G$7$g$&$+!#e(B
e$BB>$K2?$,I,MW$K$J$k$G$7$g$&$+!#e(B

e$B;~4V$,;~4V$G$9$+$i!"@.@%$5$s$N%Q%C%A$r$=$N$^$^Ev$F$F!"e(Biso-2022-jp
e$B$Ne(B
e$B5!G=$rM%@h$7$F$b$$$$$N$G$O$J$$$+$H;W$$$^$9!#$.$j$.$j$G?'!9$$$8$j$9$.$k$N$be(B
e$B4m$J$$$N$G$O$J$$$+$H;W$$$^$9$,!"CfED$5$s$NH=CG$KG$$;$^$9!#e(B

e$B59$7$/$*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:[email protected]

成瀬です。

NARUSE, Yui wrote:

transcode_data_japanese.c は自動生成な気がしたのと、transcode.c ã®æ§‹é€ ä½“
に依存しているので、下手に分けずにとりあえず transcode.c に入れておきま
した。
transcoding と transcoder を transcode_data.h いれればいいのですかね。作
業しつつとりあえずこの状態で投稿しておきます。

分けました。
これでよさそうでしたらコミットします。

e$BCfED$5$s!"$3$s$K$A$O!#e(B

e$B$.$j$.$j$N$H$3$m$GJ8;z%3!<%IJQ49MQ$N%O%C%7%e$HF0E*%m!<%I$re(B
e$BDI2C$7$F$$$?$@$$$F$"$j$,$H$&$4$6$$$^$9!#%G!<%?%U%!%$%k$Ne(B
e$B<+F0@8@.$r$3$A$i$G$b$&4{$KBgJ,9g$o$7$^$7$?!#e(B

e$B:Y$+$$$H$3$m$+$b$7$l$^$;$s$,!":#D+5$$,$D$$$?$H$3$m$G!"e(B
enc/trans e$BFb$N%U%!%$%k$OA4$Fe(B transcode_data.h e$B$re(B #include
e$B$7$F$$$k$N$K!"e(Bmake e$B$O$=$l$K5$$,$D$+$J$$8+$?$$$G$9!#e(B
e$B$3$l$r$I$&D>$7$?$i$$$$$G$7$g$&$+!#e(B

e$B59$7$/$*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:[email protected]

e$BCfED$5$s!"$3$s$K$A$O!#e(B

At 12:29 07/12/26, Nobuyoshi N. wrote:

enc.mke$BFb$Ne(B$(TRANSOBJS):e$B$N0MB8%j%9%H$K$OF~$C$F$$$k$H;W$$$^$9!#<Be(B
e$B:]$K!":#e(Btranscode_data.he$B$re(Btouche$B$7$F$_$?$H$3$m!"e(Btranscode.ce$B$He(B
enc/trans/*.ce$B$,:F%3%s%Q%$%k$5$l$^$7$?!#e(B

e$BBgJQ<:Ni$7$^$7$?!#e(Benc/trans/*.c
e$B$N%3%s%Q%$%k$,$$$/$D$+$N%j%s%/$Ne(B
e$B8e$K9T$o$l$F$$$?$N$G8+Mn$H$7$F$7$^$$$^$7$?!#e(B

e$B59$7$/$*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:[email protected]

e$B$J$+$@$G$9!#e(B

At Wed, 26 Dec 2007 11:58:47 +0900,
Martin D. wrote in [ruby-dev:32797]:

e$B:Y$+$$$H$3$m$+$b$7$l$^$;$s$,!":#D+5$$,$D$$$?$H$3$m$G!"e(B
enc/trans e$BFb$N%U%!%$%k$OA4$Fe(B transcode_data.h e$B$re(B #include
e$B$7$F$$$k$N$K!"e(Bmake e$B$O$=$l$K5$$,$D$+$J$$8+$?$$$G$9!#e(B
e$B$3$l$r$I$&D>$7$?$i$$$$$G$7$g$&$+!#e(B

enc.mke$BFb$Ne(B$(TRANSOBJS):e$B$N0MB8%j%9%H$K$OF~$C$F$$$k$H;W$$$^$9!#<Be(B
e$B:]$K!":#e(Btranscode_data.he$B$re(Btouche$B$7$F$_$?$H$3$m!"e(Btranscode.ce$B$He(B
enc/trans/*.ce$B$,:F%3%s%Q%$%k$5$l$^$7$?!#e(B