The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Unicode::Diacritic::Strip - strip diacritics from Unicode text

SYNOPSIS

    use utf8;
    use Unicode::Diacritic::Strip ':all';
    my $in = 'àÀâÂäçéÉèÈêÊëîïôùÙûüÜがぎぐげご';
    print strip_diacritics ($in), "\n";
    print fast_strip ($in), "\n";
    

produces output

    aAaAaceEeEeEeiiouUuuUかきくけこ
    aAaAaceEeEeEeiiouUuuUがぎぐげご

(This example is included as synopsis.pl in the distribution.)

VERSION

This documents Unicode::Diacritic::Strip version 0.09 corresponding to git commit 3069a4a261cef77ec40ff6aebfd2243819e64b1f released on Wed Apr 5 11:18:47 2017 +0900.

DESCRIPTION

This module offers two ways to remove diacritics from Unicode text. One of them, "strip_diacritics", uses the unicode decompositions to break the characters down. The other one, "fast_strip", is a faster alternative, which is basically tr with a big list of alphabetical characters with and without diacritics. There is also "strip_alphabet", which is the same as "strip_diacritics", but it also returns a list of what characters were changed.

FUNCTIONS

strip_diacritics

    my $stripped = strip_diacritics ($text);

Strip diacritics from $text. The diacritics are as defined by the Unicode Character Database. See Unicode::UCD.

strip_alphabet

    my ($stripped, $swaps) = strip_alphabet ($text);

Strip diacritics from $text in the same way as "strip_diacritics", and also return the alphabet of diacritic to non-diacritic characters as a hash reference.

    use utf8;
    use FindBin '$Bin';
    use Unicode::Diacritic::Strip 'strip_alphabet';
    my $stuff = '89. ročník udílení Oscarů';
    my ($out, $list) = strip_alphabet ($stuff);
    for my $k (keys %$list) {
        print "$k was converted to $list->{$k}\n";
    }

produces output

    č was converted to c
    ů was converted to u
    í was converted to i

(This example is included as strip-alphabet.pl in the distribution.)

This was added to the module in version 0.08. Prior to that it was in another module called Unicode::StripDiacritics which I wrote as a duplicate of this module, but fortunately hadn't released to CPAN.

fast_strip

    my $stripped = fast_strip ($text);

Rapidly strip alphabetical Unicode characters to the nearest plain ASCII equivalents. This is just a big list of characters and a tr to zap them into ASCII. It also contains a few other things like the thorn character and a ligature.

    use utf8;
    use FindBin '$Bin';
    use Unicode::Diacritic::Strip 'fast_strip';
    my $unicode = 'Bjørn Łódź';
    print fast_strip ($unicode), "\n";
    

produces output

    Bjorn Lodz

(This example is included as ask.pl in the distribution.)

This was added to the module in version 0.07. It has been in service for several years at the following website: http://www.sljfaq.org/cgi/e2k.cgi for converting the user's inputs into the closest English equivalent.

SEE ALSO

CPAN modules

Text::Undiacritic

This overlaps with Unicode::Diacritic::Strip.

Text::Unidecode

This somewhat bizarre module converts any Unicode to ASCII.

Text::Unaccent

This is an XS module dating from more than ten years ago which has problems compiling on 64 bit systems.

Text::Unaccent::PurePerl
Text::Transliterator::Unaccent
Text::StripAccents

Web pages

The page at Strip diacritics from text offers an online interface to this module.

How to remove diacritic marks from characters by Ivan Kurmanov.

DEPENDENCIES

Unicode::UCD
Encode

EXPORTS

Nothing is exported by default. The functions "strip_diacritics", "strip_alphabet", and "fast_strip" are exported on demand. A tag :all exports all the functions from the module.

BUGS

Test failures on Perl 5.14

The test failures on CPAN testers for version 0.08 of this module and Perl version 5.14, such as these, containing the error string

    perl: hv.c:2663: S_unshare_hek_or_pvn: Assertion `he->shared_he_he.hent_hek == hek' failed.

are due to a bug in that version of Perl, and are completely beyond my control. Unicode::Diacritic::Strip is a pure Perl module with no XS components. (I have tried to contact the tester responsible for these reports with no success, due to the registered email address bouncing.)

AUTHOR

Ben Bullock, <bkb@cpan.org>

COPYRIGHT & LICENCE

This package and associated files are copyright (C) 2012-2017 Ben Bullock.

You can use, copy, modify and redistribute this package and associated files under the Perl Artistic Licence or the GNU General Public Licence.