From: <es...@us...> - 2010-03-16 20:42:19
|
Revision: 445 http://columba.svn.sourceforge.net/columba/?rev=445&view=rev Author: eschman Date: 2010-03-16 20:42:09 +0000 (Tue, 16 Mar 2010) Log Message: ----------- [bug] fall back to UTF-8 encoding if there were encoding problems. Modified Paths: -------------- ristretto/trunk/ristretto-smtp/src/main/java/org/columba/ristretto/composer/mimepartrenderers/TextpartRenderer.java Modified: ristretto/trunk/ristretto-smtp/src/main/java/org/columba/ristretto/composer/mimepartrenderers/TextpartRenderer.java =================================================================== --- ristretto/trunk/ristretto-smtp/src/main/java/org/columba/ristretto/composer/mimepartrenderers/TextpartRenderer.java 2010-03-11 23:14:36 UTC (rev 444) +++ ristretto/trunk/ristretto-smtp/src/main/java/org/columba/ristretto/composer/mimepartrenderers/TextpartRenderer.java 2010-03-16 20:42:09 UTC (rev 445) @@ -41,6 +41,7 @@ import org.columba.ristretto.coder.QuotedPrintableEncoderInputStream; import org.columba.ristretto.composer.MimePartRenderer; import org.columba.ristretto.io.SequenceInputStream; +import org.columba.ristretto.io.StreamUtils; import org.columba.ristretto.message.MimeHeader; import org.columba.ristretto.message.MimePart; import org.columba.ristretto.message.StreamableMimePart; @@ -79,6 +80,23 @@ ((StreamableMimePart) part).getInputStream()), charset); + // check if there are encoding problems and fall back to UTF-8 in that case + StringBuffer bodyString = StreamUtils.readInString(body); + for (int i = 0; i < bodyString.length(); i++) { + if (bodyString.charAt(i) == 0) { + header.setMimeType(header.getMimeType()); + header.putContentParameter("charset", "UTF-8"); + charset = header.getCharset(); + break; + } + } + + body = + new CharsetEncoderInputStream( + new CanonizeFilterInputStream( + ((StreamableMimePart) part).getInputStream()), + charset); + switch (encoding) { case MimeHeader.BASE64 : { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |