[Mew-dist 04002] Re: charset=shift_jis
SAKAI Kiyotaka
ksakai at example.com
1998年 2月 27日 (金) 10:27:20 JST
>> In article <19980226223910W.nagae at example.com>, nagae at example.com (Nagae Hidetake) writes:
> decode は encoded word 単位ではなく,subject なら subject を一括して
> 処理していませんか.複数の coding system が混在していると,最後に出て
> くる coding system で全体が書かれているものと判断するようです.例えば
> Subject: =?euc-kr?B?x9Gx2w==?=
> =?iso-2022-jp?B?IBskQiRSJGkkLCRKGyhC?=
> とあると,EUC-KR の部分も含めて,全体を ISO-2022-JP として処理している
> ようです.
直しました。
--
酒井 清隆 (E-mail: ksakai at example.com)
Index: EncDec.pm.in
===================================================================
RCS file: /home/cvsroot/im-86/IM.in/EncDec.pm.in,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 EncDec.pm.in
--- EncDec.pm.in 1998/02/20 00:09:21 1.1.1.1
+++ EncDec.pm.in 1998/02/27 01:25:01
@@ -165,21 +165,21 @@
return '' if ($in eq '');
$in =~ s/\?=\s+=\?/?==?/g;
$in =~ s/(=\?([^?]+)\?(.)\?([^?]+)\?=)/
- ($$mime_decode_switch{uc($3)})?&{$$mime_decode_switch{uc($3)}}($4):$1/ge;
-# while ($in =~ /^(.*)=\?([^?]+)\?(.)\?([^?]+)\?=(.*)$/) {
-# if ($$mime_decode_switch{uc($3)}) {
-# $in = $1 . &{$$mime_decode_switch{uc($3)}}($4) . $5;
-# }
-# }
- my $cs = $1;
+ ($$mime_decode_switch{uc($3)})?mime_decode($2, $3, $4):$1/ge;
+ return $in;
+}
+
+sub mime_decode($$$) {
+ my ($cs, $bq, $str) = @_;
+ my $ret = &{$$mime_decode_switch{uc($3)}}($4);
if ($cs =~ /iso-8859-([2-9])/i) {
- $in = iso_8859_to_ctext($in, $1);
+ $ret = iso_8859_to_ctext($ret, $1);
} elsif ($cs =~ /cn-gb/i) {
- $in = cn_gb_to_ctext($in);
+ $ret = cn_gb_to_ctext($ret);
} elsif ($cs =~ /euc-kr/i) {
- $in = euc_kr_to_ctext($in);
+ $ret = euc_kr_to_ctext($ret);
}
- return $in;
+ return $ret;
}
sub iso_8859_to_ctext ($$) {
Mew-dist メーリングリストの案内