Author: niklas
Date: Mon Jul 21 03:36:57 2008
New Revision: 678387
URL: http://svn.apache.org/viewvc?rev=678387&view=rev
Log:
Resolved MIME4J-63: CodecUtil.encodeQuotedPrintableBinary() now handles 8bit
bytes as expected.
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java?rev=678387&r1=678386&r2=678387&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
Mon Jul 21 03:36:57 2008
@@ -138,11 +138,14 @@
if (--nextSoftBreak <= QUOTED_PRINTABLE_OCTETS_PER_ESCAPE) {
softBreak();
}
+
+ int nextUnsigned = (int) next & 0xff;
+
write(EQUALS);
--nextSoftBreak;
- write(HEX_DIGITS[next >> 4]);
+ write(HEX_DIGITS[nextUnsigned >> 4]);
--nextSoftBreak;
- write(HEX_DIGITS[next % 0x10]);
+ write(HEX_DIGITS[nextUnsigned % 0x10]);
}
private void write(byte next) throws IOException {
Modified:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java?rev=678387&r1=678386&r2=678387&view=diff
==============================================================================
---
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
(original)
+++
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
Mon Jul 21 03:36:57 2008
@@ -58,6 +58,15 @@
String actual = new String(out.toByteArray(), "US-ASCII");
assertEquals(expected, actual);
}
+
+ public void testEncodeQuotedPrintableNonAsciiChars() throws Exception {
+ String s = "7bit content with euro \u20AC symbol";
+ InputStream in = new ByteArrayInputStream(s.getBytes("iso-8859-15"));
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ CodecUtil.encodeQuotedPrintableBinary(in, out);
+ String actual = new String(out.toByteArray(), "US-ASCII");
+ assertEquals("7bit=20content=20with=20euro=20=A4=20symbol", actual);
+ }
private void assertEquals(byte[] expected, byte[] actual) {
StringBuffer buffer = new StringBuffer(expected.length);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]