---
name: "Badger::Codec::Unicode"
section: "3pm"
platform: "linux"
package: "libbadger-perl"
version: "0.16-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Badger::Codec::Unicode"
---

# Badger::Codec::Unicode(3pm)

encode/decode Unicode

## NAME

Badger::Codec::Unicode - encode/decode Unicode

## SYNOPSIS

```
    use Badger::Codec::Unicode;
    my $codec   = Badger::Codec::Unicode->new();
    my $uncoded = "...some Unicode data...";
    my $encoded = $codec->encode($uncoded);
    my $decoded = $codec->decode($encoded);
```

## DESCRIPTION

This module is a subclass of Badger::Codec implementing a very thin wrapper around the Encode module for encoding and decoding Unicode.

A `"Badger::Codec::Unicode"` object provides the **encode()** and **decode()** methods for encoding and decoding Unicode.

```
    use Badger::Codec::Unicode;
    my $codec   = Badger::Codec::Unicode->new();
    my $uncoded = "...some Unicode data...";
    my $encoded = $codec->encode($uncoded);
    my $decoded = $codec->decode($encoded);
```

You can also call **encode()** and **decode()** as class methods.

```
    my $encoded = Badger::Code::Unicode->encode($uncoded);
    my $decoded = Badger::Code::Unicode->decode($encoded);
```

You can also use a codec via the Badger::Codecs module.

```
    use Badger::Codecs
        codec => 'unicode';
```

This exports the `"encode()"` and `"decode()"` subroutines.

```
    my $uncoded  = "...some Unicode data...";
    my $encoded  = encode($uncoded);
    my $decoded  = decode($encoded)
```

## METHODS

### encode($encoding, $data)

Method for encoding Unicode data.  If two arguments are provided then  the first is the encoding and the second the data to encode.

```
    $encoded = $codec->encode( utf8 => $data );
```

If one argument is provided then the encoding defaults to `"UTF-8"`.

```
    $utf8 = $codec->encode($data);
```

### decode($encoding, $data)

Method for decoding Unicode data.  If two arguments are provided then  the first is the encoding and the second the data to decode.

```
    $decoded = $codec->decode( utf8 => $encoded );
```

If one argument is provided then the method will look for a Byte Order Mark (BOM) to determine the encoding.  If a BOM isn't present, or if the BOM doesn't match a supported Unicode BOM (any of `"UTF-8"`, `"UTF-32BE"` `"UTF-32LE"`, `"UTF-16BE"` or `"UTF-16LE"`) then the data will not be  decoded as Unicode.

```
    $decoded = $codec->decode($encoded);    # use BOM to detect encoding
```

### encoder()

This method returns a subroutine reference which can be called to encode Unicode data.  Internally it calls the **encode()** method.

```
    my $encoder = $codec->encode;
    $encoded = $encoder->($data);
```

### decoder()

This method returns a suboroutine reference which can be called to decode Unicode data. Internally it calls the **decode()** method.

```
    my $decoder = $codec->decode;
    $decoded = $decoder->($data);
```

## AUTHOR

Andy Wardley \<http://wardley.org/\>

## COPYRIGHT

Copyright (C) 2005-2009 Andy Wardley. All rights reserved.

## SEE ALSO

Encode, Badger::Codec::Encode, Badger::Codecs, Badger::Codec.
