Replacing diacritics in Javascript

How can I replace diacritics (ă,ş,ţ etc) with their “normal” form (a,s,t) in javascript?


If you want to do it entirely on the client side, I think your only option is with some kind of lookup table. Here’s a starting point, written by a chap called Olavi Ivask on his blog

function replaceDiacritics(s)
    var s;

    var diacritics =[
        /[300-306]/g, /[340-346]/g,  // A, a
        /[310-313]/g, /[350-353]/g,  // E, e
        /[314-317]/g, /[354-357]/g,  // I, i
        /[322-330]/g, /[362-370]/g,  // O, o
        /[331-334]/g, /[371-374]/g,  // U, u
        /[321]/g, /[361]/g, // N, n
        /[307]/g, /[347]/g, // C, c

    var chars = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c'];

    for (var i = 0; i < diacritics.length; i++)
        s = s.replace(diacritics[i],chars[i]);


You can see this is simply an array of regexes for known diacritic chars, mapping them back onto a “plain” character.