Changes

Release History

Version Date Description
1.9 20 December 2013 Feature and fix release.
1.8 19 April 2013 Feature and fix release. Requires a minimum of Java 1.6
1.7 11 September 2012 Feature and fix release. Requires a minimum of Java 1.6
1.6 20 November 2011 Feature and fix release. Requires a minimum of Java 1.5
1.5 29 March 2011 Feature and fix release. Requires a minimum of Java 1.4
1.4 9 August 2009 Feature and fix release. Requires a minimum of Java 1.4
1.3 10 July 2004 Feature and fix release.
1.2 24 Nov 2003 Feature and fix release.
1.1 29 April 2003 The first official release. Numerous projects had been depending on version 1.0-dev while in the Sandbox.
1.0-dev 25 April 2003 Last release from the Sandbox.

Release 1.9 - 20 December 2013

Type Changes By
Improve performance of Beider Morse encoder Fixes CODEC-174. Thanks to Thomas Champagne. ggregory
fix Beider Morse does not close Scanners used to read config files Fixes CODEC-175. ggregory
fix Base32 decode table has spurious value Fixes CODEC-172. Thanks to Matt Bishop. sebb
fix Link broken in Metaphone Javadoc Fixes CODEC-170. Thanks to Ron Wheeler, Henri Yandell. ggregory
fix Spelling fixes in Javadoc and comments Fixes CODEC-176. Thanks to Ville Skyttä. ggregory

Release 1.8 - 19 April 2013

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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

Type Changes By
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