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 にするように改造しようかなぁ。