Author: Alexandru Stanoi Date: 2007-03-07 10:17:56 +0100 (Wed, 07 Mar 2007) New Revision: 4725
Log: - Fixed issue #10396: Method convertToUTF8 assumes 'latin1' charset instead of 'unknown-8bit' and 'x-user-defined'. Added: stable/Mail/1.2/tests/transports/data/unknown-charsets.mbox Modified: stable/Mail/1.2/ChangeLog stable/Mail/1.2/src/internal/charset_convert.php stable/Mail/1.2/tests/transports/transport_mbox_test.php Modified: stable/Mail/1.2/ChangeLog =================================================================== --- stable/Mail/1.2/ChangeLog 2007-03-06 16:08:27 UTC (rev 4724) +++ stable/Mail/1.2/ChangeLog 2007-03-07 09:17:56 UTC (rev 4725) @@ -20,6 +20,8 @@ mails with wrapped headers. - Fixed issue #10359: unrecognized mail body parts are parsed using the ezcMailFileParser. +- Fixed issue #10396: Method convertToUTF8 assumes 'latin1' charset instead of + 'unknown-8bit' and 'x-user-defined'. 1.2 - Monday 18 December 2006 Modified: stable/Mail/1.2/src/internal/charset_convert.php =================================================================== --- stable/Mail/1.2/src/internal/charset_convert.php 2007-03-06 16:08:27 UTC (rev 4724) +++ stable/Mail/1.2/src/internal/charset_convert.php 2007-03-07 09:17:56 UTC (rev 4725) @@ -21,14 +21,20 @@ /** * Converts the $text with the charset $originalCharset to UTF-8 * + * In case $originalCharset is 'unknown-8bit' or 'x-user-defined' then + * it is assumed to be 'latin1' (ISO-8859-1). + * * @param string $text * @param string $originalCharset * @return string */ public static function convertToUTF8( $text, $originalCharset ) { + if ( $originalCharset === 'unknown-8bit' || $originalCharset === 'x-user-defined' ) + { + $originalCharset = "latin1"; + } return iconv( $originalCharset, 'utf-8', $text ); } } - ?> Added: stable/Mail/1.2/tests/transports/data/unknown-charsets.mbox =================================================================== --- stable/Mail/1.2/tests/transports/data/unknown-charsets.mbox 2007-03-06 16:08:27 UTC (rev 4724) +++ stable/Mail/1.2/tests/transports/data/unknown-charsets.mbox 2007-03-07 09:17:56 UTC (rev 4725) @@ -0,0 +1,46 @@ +From [EMAIL PROTECTED] Sat Mar 03 20:07:45 2007 +X-UIDL: 1YC!!;'*!!ndf!!~+]!! +Return-path: <[EMAIL PROTECTED]> +Envelope-to: [EMAIL PROTECTED] +Delivery-date: Sat, 03 Mar 2007 20:07:45 +0200 +Received: from root by localhost.localdomain with local (Exim 4.50) + id 1HNYe0-0000FS-Um + for [EMAIL PROTECTED]; Sat, 03 Mar 2007 20:07:45 +0200 +Date: Sat, 3 Mar 2007 20:07:44 +0200 +To: vtiger <[EMAIL PROTECTED]> +Subject: test +Message-ID: <[EMAIL PROTECTED]> +Mime-Version: 1.0 +Content-Type: text/plain; charset=x-user-defined +Content-Disposition: inline +User-Agent: Mutt/1.5.9i +From: root <[EMAIL PROTECTED]> +Status: RO +Content-Length: 7 +Lines: 2 + +Tämä on testiöö1 + + +From [EMAIL PROTECTED] Sat Mar 03 22:03:18 2007 +X-UIDL: :k%#!A~n!!l=*"!1cY!! +Return-path: <[EMAIL PROTECTED]> +Envelope-to: [EMAIL PROTECTED] +Delivery-date: Sat, 03 Mar 2007 22:03:18 +0200 +Received: from root by localhost.localdomain with local (Exim 4.50) + id 1HNaRq-0000GP-2g + for [EMAIL PROTECTED]; Sat, 03 Mar 2007 22:03:18 +0200 +Date: Sat, 3 Mar 2007 22:03:18 +0200 +To: vtiger <[EMAIL PROTECTED]> +Subject: Mail test 2 +Message-ID: <[EMAIL PROTECTED]> +Mime-Version: 1.0 +Content-Type: text/plain; charset=unknown-8bit +Content-Disposition: inline +Content-Transfer-Encoding: 8bit +User-Agent: Mutt/1.5.9i +From: root <[EMAIL PROTECTED]> +Status: RO + +Tämä on testiöö2 + Modified: stable/Mail/1.2/tests/transports/transport_mbox_test.php =================================================================== --- stable/Mail/1.2/tests/transports/transport_mbox_test.php 2007-03-06 16:08:27 UTC (rev 4724) +++ stable/Mail/1.2/tests/transports/transport_mbox_test.php 2007-03-07 09:17:56 UTC (rev 4725) @@ -227,6 +227,19 @@ $this->assertEquals( $expected, $mail[0]->getHeader( "List-Subscribe" ) ); } + public function testFetchMailUnknownCharsets() + { + $mbox = new ezcMailMboxTransport( dirname( __FILE__ ) . "/data/unknown-charsets.mbox" ); + $set = $mbox->fetchAll(); + $parser = new ezcMailParser(); + $mail = $parser->parseMail( $set ); + $this->assertEquals( "x-user-defined", $mail[0]->body->originalCharset ); + $this->assertEquals( "utf-8", $mail[0]->body->charset ); + $this->assertEquals( "Tämä on testiöö1", trim( $mail[0]->body->text ) ); + $this->assertEquals( "unknown-8bit", $mail[1]->body->originalCharset ); + $this->assertEquals( "utf-8", $mail[1]->body->charset ); + $this->assertEquals( "Tämä on testiöö2", trim( $mail[1]->body->text ) ); + } public static function suite() { -- svn-components mailing list svn-components@lists.ez.no http://lists.ez.no/mailman/listinfo/svn-components