<?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 an 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 latest version</a></li>
  <li><a href="https://javadoc.io/doc/commons-codec/commons-codec">Javadoc archive</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">Download latest version (mirrors)</a>; requires Java 8 or above</li>
  <li><a href="https://archive.apache.org/dist/commons/codec/">Download archive</a></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>
