|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Andrey Slusar 2:467/126 16 Jul 2004 13:21:48 To : Alex Povolotsky Subject : Re: squirrelmail и русский -------------------------------------------------------------------------------- Thu, 15 Jul 2004 23:01:13 +0300, Alex Povolotsky wrote to All: AP> А кто-нибудь побеждал squirrelmail настолько, чтобы он не дурил при работе AP> с русскими письмами? Особенно интересует корректная генерация ответов... Вот что у меня сделано: --8<---------------cut here---------------start------------->8--- diff -urN functions/i18n.php functions/i18n.php -+- functions/i18n.php 2004-05-19 19:57:23.000000000 +0400 +++ functions/i18n.php 2004-06-24 17:27:00.000000000 +0400 @@ -19,7 +19,7 @@ /* Decodes a string to the internal encoding from the given charset */ function charset_decode ($charset, $string) { - global $languages, $squirrelmail_language; + global $languages, $squirrelmail_language, $default_charset; if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) { @@ -37,7 +37,7 @@ /* controls cpu and memory intensive decoding cycles */ $agresive_decoding = false; - if (ereg('iso-8859-([[:digit:]]+)', $charset, $res)) { + /* if (ereg('iso-8859-([[:digit:]]+)', $charset, $res)) { if ($res[1] == '1') { include_once(SM_PATH . 'functions/decode/iso8859-1.php'); $ret = charset_decode_iso8859_1 ($string); @@ -165,7 +165,16 @@ $ret = charset_decode_utf8 ($string); } else { $ret = $string; - } + } */ + /* $ret = iconv($charset, $default_charset, $string); */ + if (($charset == 'koi8-r') || ($charset == 'utf-8') || ($charset == 'windows-1251') || ($charset == 'iso-8859-5') || (ereg('866',$charset))) { + $ret = mb_convert_encoding($string, $default_charset, $charset); + } else { + $ret = $string; + } + if (!$ret) { + $ret = $string; + } return( $ret ); } @@ -472,8 +481,8 @@ $languages['ro']['ALIAS'] = 'ro_RO'; $languages['ru_RU']['NAME'] = 'Russian'; -$languages['ru_RU']['CHARSET'] = 'utf-8'; -$languages['ru_RU']['LOCALE'] = 'ru_RU.UTF-8'; +$languages['ru_RU']['CHARSET'] = 'koi8-r'; +$languages['ru_RU']['LOCALE'] = 'ru_RU.KOI8-R'; $languages['ru']['ALIAS'] = 'ru_RU'; $languages['sk_SK']['NAME'] = 'Slovak'; diff -urN src/compose.php src/compose.php -+- src/compose.php 2004-05-31 21:32:34.000000000 +0400 +++ src/compose.php 2004-06-24 13:45:17.000000000 +0400 @@ -629,6 +629,15 @@ $bodypart = $languages[$squirrelmail_language]['XTRA_CODE']('decode', $bodypart); } } + set_my_charset(); + global $default_charset; + $actual = $body_part_entity->header->parameters['charset']; + if ($actual && $actual != $default_charset){ + $bodypart = charset_decode($actual,$bodypart); + } + $entity_trans = array_flip(get_html_translation_table(HTML_ENTITIES)); + $char_trans = array_flip(get_html_translation_table(HTML_SPECIALCHARS)); + $bodypart = strtr(strtr($bodypart, $entity_trans), $char_trans); $body .= $bodypart; } if ($default_use_priority) { --8<---------------cut here---------------end--------------->8--- Только не поняимаю, почему не срабатывает: $ret = mb_convert_encoding($string, $default_charset, $charset); в i18n.php - пишет, что не определена. Вроде должно. Может кто-то, разбирающийся в php, поправит. -- Всего хорошего. Андрей. ... В комнату вошел негp в ботинках телесного цвета... --- Gnus/5.110003 (No Gnus v0.3) XEmacs/21.4 (Security Through Obscurity) * Origin: Unix is user friendly. However, it isn't idiot friendly. (2:467/126) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/27493d389c50.html, оценка из 5, голосов 10
|