Hello. I am trying to convert "foreign" characters such as é, È, é, etc. into a simple e or E.

The reason is that these complex characters are in our URI's for our site, and we need to canonicalize them into a simple form that can easily be typed (otherwise we would just use numbers or some ID for our URI's). We are not worried about collisions in the converted URI's.

I have looked into such modules as Encode, Unicode::Normalize, and Unicode::Map but I have had very little luck in understanding just even the simple steps I need to take to solve this problem.

If anyone has any advice or even solutions, then I would be very grateful for some knowledge transfer. For what it is worth, the following code is as close as myself and my co-worker have been able to get to solving this problem:

use Encode; use Unicode::Normalize qw(normalize); my $ascii = encode('ascii', normalize('KD', $utf8), sub {$_[0] = ''});
However, even though this worked for him (he used this code on another project/site/client), my output for "é" was "A\x{0303}\x{00a9}" when I was expecting "e" ... perhaps my strings are not UTF-8 after all? Is there a known way to determine what encoding a particular piece of data might be?

Forever puzzled,
Anonymous Monk


In reply to Convert Unicode to ASCII by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.