08 September '2003 - 02:07 | 雑記 squirrel mail
返信のときに文字化けすることがある、って言われたので、先日と同様のパッチをあてることで回避することにした。確かに mb_detect_encoding() は便利だけど、メーラが言ってる通りにする方がいいと思う。 
 
$ diff -u  compose.php.orig compose.php 
 
--- compose.php.orig    Fri Jul 18 05:46:16 2003 
 
+++ compose.php Mon Sep  8 01:49:04 2003 
 
@@ -612,7 +612,25 @@ 
 
             } 
 
             if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && 
 
                 function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) { 
 
-                if (mb_detect_encoding($bodypart) != 'ASCII') { 
 
+ 
 
+                /* why don't we just depend on the charset specified by mailers 
 
+                 * rather than mb_detect_encoding() which does not always detect 
 
+                 * encoding as we expect? 
 
+                 */ 
 
+               $charset = strtolower($body_part_entity->header->parameters['charset']); 
 
+                if ($charset != 'us-ascii' && $charset != 'iso-8859-1') { 
 
+                    if ($charset == 'iso-2022-jp') { 
 
+                        $encoding2 = 'JIS'; 
 
+                    } else if ($charset == 'euc-jp') { 
 
+                        $encoding2 = 'EUC'; 
 
+                    } else if ($charset == 'shift_jis') { 
 
+                        $encoding2 = 'SJIS'; 
 
+                    } else if ($charset == 'utf-8') { 
 
+                        $encoding2 = 'UTF-8'; 
 
+                    } else { 
 
+                        $encoding2 = 'AUTO'; 
 
+                    } 
 
+                    $bodypart = mb_convert_encoding($bodypart, 'EUC-JP', $encoding2); 
 
                     $bodypart = $languages[$squirrelmail_language]['XTRA_CODE']('decode', $bodypart); 
 
                 } 
 
             } 
 
だいたい、表示に EUC-JP なんて使ってる時点で、ぜんぜんダメだけれど、まぁ、日本人が英語アプリを日本語化すると、世の中には日本語と英語しかないって思っちゃうんだろうな。
暇を見て、すべてを UTF-8 にするように改造しようかなぁ。
 



