<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
 <properties>
  <title>Home</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Apache Commons Codec">
<p>
Apache Commons Codec (TM) software provides implementations of common encoders and decoders
such as Base64, Hex, Phonetic and URLs.
<!--ul>
<li>Base64</li>
<li>Hex</li>
<li>Phonetic</li>
<li>URL</li>
</ul-->
</p>
</section>
<!-- ================================================== -->
<section name="Impetus">
<p>
Codec was formed as an attempt to focus development effort on one
definitive implementation of the Base64 encoder.  At the time of
Codec's proposal, there were approximately 34 different Java
classes that dealt with Base64 encoding spread over the
Foundation's CVS repository.  Developers in the Jakarta Tomcat
project had implemented an original version of the Base64 codec
which had been copied by the Commons HttpClient and Apache XML
project's XML-RPC subproject.  After almost one year, the two
forked versions of Base64 had significantly diverged from one
another.  XML-RPC had applied numerous fixes and patches which
were not applied to the Commons HttpClient Base64.  Different
subprojects had differing implementations at various levels
of compliance with the <a href="http://www.ietf.org/rfc/rfc2045.txt">
RFC 2045</a>.
</p>
<p>
Out of that confusing duplication of effort sprang this simple
attempt to encourage code reuse among various projects.  While
this package contains a abstract framework for the creation of
encoders and decoders, Codec itself is primarily focused on
providing functional utilities for working with common encodings.
</p>
</section>
<!-- ================================================== -->
<section name="Documentation">
<p>
An overview of the functionality is provided in the
<a href="userguide.html">user guide</a>.
Various <a href="project-reports.html">project reports</a> are also available.
</p>
<p>
The Javadoc API documents are available online:
</p>
<ul>
  <li><a href="apidocs/index.html">Javadoc git (master)</a></li>
  <li><a href="archives/1.12/apidocs/index.html">Javadoc 1.12</a></li>
  <li><a href="archives/1.11/apidocs/index.html">Javadoc 1.11</a></li>
  <li><a href="archives/1.10/apidocs/index.html">Javadoc 1.10</a></li>
  <li><a href="archives/1.9/apidocs/index.html">Javadoc 1.9</a></li>
  <li><a href="archives/1.8/apidocs/index.html">Javadoc 1.8</a></li>
  <li><a href="archives/1.7/apidocs/index.html">Javadoc 1.7</a></li>
</ul>
<p>
The <a href="scm.html">subversion repository</a> can be
<a href="https://gitbox.apache.org/repos/asf?p=commons-codec.git">browsed</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Releases">
<ul>
  <li><a href="https://commons.apache.org/codec/download_codec.cgi">Codec 1.12 (mirrors)</a> requires Java 1.7</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.11 (archives)</a> requires Java 1.6</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.10 (archives)</a> requires Java 1.6</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.9 (archives)</a> requires Java 1.6</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.8 (archives)</a> requires Java 1.6</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.7 (archives)</a> requires Java 1.6</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.6 (archives)</a> requires Java 1.5</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Codec 1.5 (archives)</a> requires Java 1.4</li>
</ul>
<p>
See the
<a href="https://commons.apache.org/codec/download_codec.cgi">Download Page</a>
for the latest releases.<br />
</p>
<p>
<a href="changes-report.html">Change reports</a> are also available.
</p>
<p>
For previous releases, see the <a href="https://archive.apache.org/dist/commons/codec/">Apache Archive</a>
</p>
</section>
<!-- ================================================== -->
<section name="Support">
<p>
The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
The user list is suitable for most library usage queries.
The dev list is intended for the development discussion.
Please remember that the lists are shared between all commons components,
so prefix your email by [codec].
</p>
<p>
Issues may be reported via <a href="issue-tracking.html">ASF JIRA</a>.
</p>
</section>
<!-- ================================================== -->
 </body>
</document>
