Changes

Release History

VersionDateDescription
1.819 April 2013Feature and fix release. Requires a minimum of Java 1.6
1.711 September 2012Feature and fix release. Requires a minimum of Java 1.6
1.620 November 2011Feature and fix release. Requires a minimum of Java 1.5
1.529 March 2011Feature and fix release. Requires a minimum of Java 1.4
1.49 August 2009Feature and fix release. Requires a minimum of Java 1.4
1.310 July 2004Feature and fix release.
1.224 Nov 2003Feature and fix release.
1.129 April 2003The first official release. Numerous projects had been depending on version 1.0-dev while in the Sandbox.
1.0-dev25 April 2003Last release from the Sandbox.

Release 1.8 - 19 April 2013

TypeChangesBy

add

Add DigestUtils.updateDigest(MessageDigest, InputStream). Fixes CODEC-168. Thanks to Daniel Cassidy.ggregory

add

Add JUnit to test our decode with pad character in the middle. Fixes CODEC-167.julius

add

Add Match Rating Approach (MRA) phonetic algorithm encoder. Fixes CODEC-161. Thanks to crice.ggregory

fix

ColognePhonetic encoder unnecessarily creates many char arrays on every loop run. Fixes CODEC-163. Thanks to leo141.ggregory

fix

Base64.encodeBase64URLSafeString doesn't add padding characters at the end. Fixes CODEC-160.sebb

Release 1.7 - 11 September 2012

TypeChangesBy

add

DigestUtils: Add MD2 APIs. Fixes CODEC-157. Thanks to ggregory.ggregory

add

DigestUtils: add APIs named after standard algorithm name SHA-1. Fixes CODEC-156. Thanks to ggregory.ggregory

add

DigestUtils.getDigest(String) should throw IllegalArgumentException instead of RuntimeException. Fixes CODEC-155. Thanks to ggregory.ggregory

add

Create a class MessageDigestAlgorithms to define standard algorithm names. Fixes CODEC-153. Thanks to ggregory.ggregory

add

DigestUtils.getDigest(String) loses the original exception. Fixes CODEC-152. Thanks to ggregory.ggregory

add

Remove unnecessary attempt to fill up the salt variable in UnixCrypt. Fixes CODEC-151. Thanks to lathspell.ggregory

add

Remove unnecessary call to Math.abs(). Fixes CODEC-150. Thanks to lathspell.ggregory

add

More tests and minor things. Fixes CODEC-148. Thanks to lathspell.ggregory

add

Added regression tests for PhoneticEngine based on Solr-3.6.0. Fixes CODEC-146. Thanks to Julius Davies.tn

update

BeiderMorseEncoder/PhoneticEngine: make results deterministic by using a LinkedHashSet instead of a HashSet. Fixes CODEC-147.tn

update

StringBuffer could be replaced by StringBuilder for local variables. Fixes CODEC-143.sebb

add

DigestUtils: add updateDigest methods and make methods public. Fixes CODEC-139. Thanks to dsebastien.ggregory

add

Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants. Fixes CODEC-133. Thanks to lathspell.ggregory

fix

Base64 encode() method is no longer thread-safe, breaking clients using it as a shared BinaryEncoder. Note: the fix breaks binary compatibility, however the changes are to a class (BaseNCodec) which is intended for internal use. Fixes CODEC-96. Thanks to sebb.ggregory

fix

Complete FilterInputStream interface for BaseNCodecInputStream. Fixes CODEC-138.sebb

fix

Use Charset objects when possible, create Charsets for required character encodings. Fixes CODEC-136.ggregory

fix

BeiderMorseEncoder OOM issues. Fixes CODEC-132. Thanks to rcmuir.ggregory

fix

DoubleMetaphone javadoc contains dead links. Fixes CODEC-131. Thanks to smolav.tn

add

Base64InputStream.skip skips underlying stream, not output. Fixes CODEC-130. Thanks to tn.ggregory

add

Implement NYSIIS phonetic encoder. Fixes CODEC-63. Thanks to tn.ggregory

Release 1.6 - 20 November 2011

TypeChangesBy

fix

Use standard Maven directory layout. Fixes CODEC-129. Thanks to ggregory.ggregory

fix

Documentation spelling fixes. Fixes CODEC-128. Thanks to ville.skytta@iki.fi.ggregory

fix

Fix various character encoding issues in comments and test cases. Fixes CODEC-127.ggregory, sebb

update

Implement a Beider-Morse phonetic matching codec. Fixes CODEC-125. Thanks to Matthew Pocock.ggregory, matthewpocock

update

Migrate to Java 5. Fixes CODEC-119.ggregory

update

Migrate to JUnit 4. Fixes CODEC-120.ggregory

fix

ColognePhonetic Javadoc should use HTML entities for special characters. Fixes CODEC-123.ggregory

Release 1.5 - 29 March 2011

TypeChangesBy

add

Added new Base32 encoder. Fixes CODEC-88.sebb

fix

new Base64().encode() appends a CRLF, and chunks results into 76 character lines. Fixes CODEC-89.sebb

fix

Many test cases use getBytes() which uses the default platform encoding so tests may fail on some platforms. Fixes CODEC-92.sebb

add

Add test(s) to check that encodeBase64() does not chunk output. Fixes CODEC-93. Thanks to sebb.sebb, julius, ggregory

fix

Base64 default constructor behaviour changed to enable chunking in 1.4. Fixes CODEC-97. Thanks to mjryall.sebb

fix

Base64.encodeBase64String() shouldn't chunk. Fixes CODEC-99. Thanks to julius.ggregory

fix

Base64InputStream#read(byte[]) incorrectly returns 0 at end of any stream which is multiple of 3 bytes long. Fixes CODEC-101. Thanks to balusc.julius

fix

Typo in DecoderException message thrown from Hex.decodeHex. Fixes CODEC-103. Thanks to gnuf.bayard

add

ArrayIndexOutOfBoundsException when doing multiple reads() on encoding Base64InputStream. Fixes CODEC-105. Thanks to zak.julius, ggregory

add

Add the "Kölner Phonetik" encoder (Cologne Phonetic) to codec.lang. Fixes CODEC-106. Thanks to it2mmeyerfa.bayard

add

org.apache.commons.codec.net.URLCodec.ESCAPE_CHAR isn't final but should be. Fixes CODEC-111. Thanks to ggregory.ggregory

add

Base64.encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) throws IAE for valid maxResultSize if isChunked is false. Fixes CODEC-112. Thanks to sebb.sebb

add

org.apache.commons.codec.language.RefinedSoundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. Fixes CODEC-113. Thanks to ggregory.ggregory

add

org.apache.commons.codec.language.Soundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. Fixes CODEC-114. Thanks to ggregory.ggregory

add

DoubleMetaphone.maxCodeLen should probably be private. Fixes CODEC-115. Thanks to sebb.ggregory

remove

Remove deprecated package private method Base64.discardWhitespace(byte[]) Fixes CODEC-116. Thanks to ggregory.ggregory

fix

Caverphone encodes names starting and ending with "mb" incorrectly. Fixes CODEC-117. Thanks to ggregory.ggregory

add

Split Caverphone class into two classes for Caverphone 1.0 and 2.0. Fixes CODEC-118. Thanks to ggregory.ggregory

Release 1.4 - 9 August 2009

TypeChangesBy

fix

Regression: Base64.encode(chunk=true) has bug when input length is multiple of 76. Fixes CODEC-80. Thanks to Julius Davies.ggregory

fix

Base64 bug with empty input (new byte[0]). Fixes CODEC-77. Thanks to Julius Davies.ggregory

fix

Make Base64 URL-safe. Fixes CODEC-75. Thanks to Julius Davies.ggregory

add

Allow for uppercase letters output in Hex.encodeHex(). Fixes CODEC-74.ggregory

fix

Soundex and RefinedSoundex issues with character arrays. Fixes CODEC-72. Thanks to Sebb.bayard

fix

Base64.isArrayByteBase64() method is inefficient for large byte arrays. Fixes CODEC-71. Thanks to Sebb.bayard

fix

Thread safety and malicious code safety improvements. Fixes CODEC-70. Thanks to Sebb.bayard

fix

isBase64 throws ArrayIndexOutOfBoundsException on some non-BASE64 bytes. Fixes CODEC-68. Thanks to Robert Rodewald.bayard

fix

Fix case-insensitive string handling. Fixes CODEC-65. Thanks to Benjamin Bentmann.bayard

fix

Base64.encodeBase64() throws NegativeArraySizeException on large files. Fixes CODEC-61. Thanks to Igor Slepchin.ggregory

add

Implement Caverphone. Fixes CODEC-60.bayard

fix

Character set used by Base64 not documented. Fixes CODEC-58. Thanks to Julius Davies.ggregory

fix

RefinedSoundex creates instance before al fields have been initialized. Fixes CODEC-56. Thanks to Sebb.bayard

add

Digest on InputStreams. Fixes CODEC-52. Thanks to Niklas Gustavsson.bayard

fix

2 Test failures in SoundexTest. Fixes CODEC-51.bayard

add

Patch to add crypto-compatible BigInteger encoding support to Base64. Fixes CODEC-40. Thanks to Chris Black.bayard

add

DigestUtils: Add methods for SHA-256, SHA-384, and SHA-512. Fixes CODEC-39. Thanks to Jamie Flournoy.ggregory

fix

Using US_ENGLISH in Soundex caused an NullPointerException. Fixes CODEC-10. Thanks to Reggie Riser.tobrien

fix

Source tarball spews files all over the place. Fixes CODEC-6. Thanks to David Tonhofer.tobrien

fix

Base64.isArrayByteBase64() throws an ArrayIndexOutOfBoundsException for negative octets Fixes CODEC-22. Thanks to Piero Ottuzzi.ggregory

add

Streaming Base64 (Base64InputStream and Base64OutputStream added). Fixes CODEC-69. Thanks to Julius Davies.jochen

fix

Base64: Improve Code Coverage. Fixes CODEC-78. Thanks to Julius Davies.ggregory

add

Add methods to Base64 which work with String instead of byte[]. Fixes CODEC-59. Thanks to Julius Davies.ggregory

fix

Base64's new constructor parameters ignored. Fixes CODEC-81. Thanks to Julius Davies.ggregory

fix

Improve Double Metaphone test coverage. Fixes CODEC-83.niallp

fix

Double Metaphone bugs in alternative encoding. Fixes CODEC-84.niallp

fix

Make string2byte conversions indepedent of platform default encoding. Fixes CODEC-73. Thanks to Benjamin Bentmann.ggregory

Release 1.3 - 10 July 2004

TypeChangesBy

add

BinaryCodec: Encodes and decodes binary to and from Strings of 0s and 1s. Fixes CODEC-21. Thanks to Alex Karasulu.ggregory, tobrien

add

QuotedPrintableCodec: Codec for RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One. Rules #3, #4, and #5 of the quoted-printable spec are not implemented yet. See also issue CODEC-46. Fixes CODEC-41. Thanks to Oleg Kalnichevski.ggregory

add

BCodec: Identical to the Base64 encoding defined by RFC 1521 and allows a character set to be specified. Fixes CODEC-41. Thanks to Oleg Kalnichevski.ggregory

add

QCodec: Similar to the Quoted-Printable content-transfer-encoding defined in RFC 1521 and designed to allow text containing mostly ASCII characters to be decipherable on an ASCII terminal without decoding. Fixes CODEC-41. Thanks to Oleg Kalnichevski.ggregory

add

Soundex: Implemented the DIFFERENCE algorithm. Fixes CODEC-45. Thanks to Matthew Inger.ggregory

add

RefinedSoundex: Implemented the DIFFERENCE algorithm. Fixes CODEC-45. Thanks to Matthew Inger.ggregory

update

This version is relesed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a> , please see LICENSE.txt. Previous versions were released under the <a href="http://www.apache.org/licenses/LICENSE-1.1">Apache License 1.1</a>ggregory

update

The Board recommendation to remove Javadoc author tags has been implemented. All author tags are now "Apache Software Foundation".ggregory

fix

The default URL encoding logic was broken. Fixes CODEC-25. Thanks to Oleg Kalnichevski.ggregory

fix

Base64 chunked encoding not compliant with RFC 2045 section 2.1 CRLF. Fixes CODEC-31. Thanks to Gary D. Gregory.ggregory

fix

Hex converts illegal characters to 255. Fixes CODEC-5.ggregory

fix

Metaphone now correctly handles a silent B in a word that ends in MB. "COMB" is encoded as "KM", before this fix "COMB" was encoded as "KMB". Fixes CODEC-17.tobrien

fix

Added missing tags in Javadoc comments.ggregory

fix

General Javadoc improvements.ggregory

Release 1.2 - 24 Nov 2003

TypeChangesBy

add

URLCodec: Implements the www-form-urlencoded encoding scheme. Thanks to Oleg Kalnichevski.tobrien

add

DigestUtils: Calculates MD5 and SHA digests. Thanks to Dave Dribin, David Graham.tobrien

fix

Modified Base64 to remedy non-compliance with RFC 2045. Non-Base64 characters were not being discarded during the decode. RFC 2045 explicitly states that all characters outside of the base64 alphabet are to be ignored. Fixes CODEC-26. Thanks to Brian Ewins.tobrien

fix

Hex.decode(Object) throws a ClassCastException when a String argument is passed in. Fixes CODEC-4.ggregory

fix

Soundex: The HW rule is not applied; hyphens and apostrophes are not ignored. Fixes CODEC-3.ggregory

fix

Soundex.setMaxLength causes bugs and is not needed. Calling Soundex.setMaxLength() with a value of 2 or less causes the wrong answer to be returned. Since the encoding returned by Soundex is always of length 4 by definition (we do not use the '-' in as a letter-nnn separator) the need for a maxLength attribute is not needed. Deprecate the field and accessor methods. Fixes CODEC-29.ggregory

fix

Fix in Metaphone relating to the handling of the maximum code length.Members

Release 1.1 - 29 April 2003

TypeChangesBy

add

A newer version of the Base64 class reflecting improvements from both the commons-httpclient and xml-rpc versions of code forked from catalina.Members

add

Base64 class from commons-httpclient in org.apache.commons.codec.base64 has been retained for backwards compatibility but has been deprecated.Members

add

Soundex class from commons-util in org.apache.commons.codec.Members

add

Metaphone class from commons-util in org.apache.commons.codec.Members

add

RefinedSoundex class in org.apache.commons.codec.tobrien

add

Encoder/Decoder interfaces in org.apache.commons.Members

add

String and Binary specific Encoder/Decoder interfaces in org.apache.commons.Members

add

StringEncoderComparator replaces the SoundexComparator from the language package.Members

fix

Base64 now discards whitespace characters when decoding encoded content.Members

Release 1.0-dev - 25 April 2003

TypeChangesBy

add

Base64 class from commons-httpclient in org.apache.commons.codec.base64.tobrien

add

Soundex class from commons-util in org.apache.commons.codec.tobrien

add

Metaphone class from commons-util in org.apache.commons.codec.tobrien

add

SoundexComparator class from commons-util in org.apache.commons.codec.Members