<p>Is there any free java library which I can use to convert string in one encoding to other encoding, something like <a href="https://en.wikipedia.org/wiki/Iconv" rel="nofollow noreferrer"><code>iconv</code></a>? I'm using Java version 1.3.</p>

```
CharsetDecoder
```
should be what you are looking for, no ?
Many network protocols and files store their characters with a byte-oriented character set such as
```
ISO-8859-1
```
(
```
ISO-Latin-1
```
).
However, Java's native character encoding is
Unicode
UTF16BE (Sixteen-bit UCS Transformation Format, big-endian byte order).
See
```
Charset
```
. That doesn't mean
```
UTF16
```
is the default charset (i.e.: the default "mapping between sequences of sixteen-bit
Unicode code units
and sequences of bytes"):
Every instance of the Java virtual machine has a default charset, which may or may not be one of the standard charsets.
[
```
US-ASCII
```
,
```
ISO-8859-1
```
a.k.a.
```
ISO-LATIN-1
```
,
```
UTF-8
```
,
```
UTF-16BE
```
,
```
UTF-16LE
```
,
```
UTF-16
```
]
The default charset is determined during virtual-machine startup and typically depends upon the locale and charset being used by the underlying operating system.
This example demonstrates how to convert
```
ISO-8859-1
```
encoded bytes in a
```
ByteBuffer
```
to a string in a
```
CharBuffer
```
and visa versa.
```
```
// Create the encoder and decoder for ISO-8859-1
Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();

try {
    // Convert a string to ISO-LATIN-1 bytes in a ByteBuffer
    // The new ByteBuffer is ready to be read.
    ByteBuffer bbuf = encoder.encode(CharBuffer.wrap("a string"));

    // Convert ISO-LATIN-1 bytes in a ByteBuffer to a character ByteBuffer and then to a string.
    // The new ByteBuffer is ready to be read.
    CharBuffer cbuf = decoder.decode(bbuf);
    String s = cbuf.toString();
} catch (CharacterCodingException e) {
}
```
```