NAME

URI::Encode - Simple URI Encoding/Decoding

VERSION

This document describes URI::Encode version 0.04

SYNOPSIS

## OO Interface
use URI::Encode;
my $uri = URI::Encode->new();
my $encoded = $uri->encode($url);
my $decoded = $uri->decode($encoded);

## Using exported functions
use URI::Encode qw(uri_encode uri_decode);
my $encoded = uri_encode($url);
my $decoded = uri_decode($url);

DESCRIPTION

This modules provides simple URI (Percent) encoding/decoding

The main purpose of this module (at least for me) was to provide an easy method to encode strings (mainly URLs) into a format which can be pasted into a plain text emails, and that those links are 'click-able' by the person reading that email. This can be accomplished by NOT encoding the reserved characters.

If you are looking for speed and want to encode reserved characters, use URI::Escape::XS

METHODS

new()

Creates a new object, no arguments are required

my $encoder = URI::Encode->new(\%options);

The following options can be passed to the constructor

encode_reserved
my $encoder = URI::Encode->new({encode_reserved => 0});

If true, "Reserved Characters" are also encoded. Defaults to false.

encode($url, $including_reserved)

This method encodes the URL provided. The method does not encode any "Reserved Characters" unless $including_reserved is true or set in the constructor. The $url provided is first converted into UTF-8 before percent encoding.

$uri->encode("http://perl.com/foo bar");      # http://perl.com/foo%20bar
$uri->encode("http://perl.com/foo bar", 1);   # http%3A%2F%2Fperl.com%2Ffoo%20bar

decode($url)

This method decodes a 'percent' encoded URL. If you had encoded the URL using this module (or any other method), chances are that the URL was converted to UTF-8 before 'percent' encoding. Be sure to check the format and convert back if required.

$uri->decode("http%3A%2F%2Fperl.com%2Ffoo%20bar"); # "http://perl.com/foo bar"

EXPORTED FUNCTIONS

The following functions are exported upon request. This provides a non-OOP interface

uri_encode($url, $including_reserved)

See "encode($url, $including_reserved)"

uri_decode($url)

See "decode($url)"

CHARACTER CLASSES

Reserved Characters

The following characters are considered as reserved (RFC 3986). They will be encoded only if requested.

! * ' ( ) ; : @ & = + $ , / ? % # [ ]

Unreserved Characters

The following characters are considered as Unreserved. They will not be encoded

a-z
A-Z
0-9
- _ . ~

DEPENDENCIES

Encode

ACKNOWLEDGEMENTS

Gisle Aas for URI::Escape

David Nicol for Tie::UrlEncoder

SEE ALSO

RFC 3986

URI::Escape

URI::Escape::XS

URI::Escape::JavaScript

Tie::UrlEncoder

BUGS AND LIMITATIONS

No bugs have been reported.

Please report any bugs or feature requests to bug-uri-encode@rt.cpan.org, or through the web interface at http://rt.cpan.org.

AUTHOR

Mithun Ayachit <mithun@cpan.org>

LICENCE AND COPYRIGHT

Copyright (c) 2010, Mithun Ayachit <mithun@cpan.org>. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.