[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 メーリングリストの案内