Home Articles FAQs XREF Games Software Instant Books BBS About FOLDOC RFCs Feedback Sitemap
irt.Org
#

Q242 How can I replace diacritical characters?

You are here: irt.org | FAQ | JavaScript | Text | Q242 [ previous next ]

The following *little* example demonstrates how to replace any and all the diacritical characters with something simpler:

<FORM NAME="test">
<INPUT TYPE="BUTTON" VALUE="Convert" onclick="doit()">
<BR><TEXTAREA NAME="output" COLS=16 ROWS=62>
</TEXTAREA>
</FORM>

<SCRIPT LANGUAGE="JavaScript"><!--
function doit() {
    text = document.test.output.value;
    text = replace(text,unescape('%C0'),'A');
    text = replace(text,unescape('%C1'),'A');
    text = replace(text,unescape('%C2'),'A');
    text = replace(text,unescape('%C3'),'A');
    text = replace(text,unescape('%C4'),'A');
    text = replace(text,unescape('%C5'),'A');
    text = replace(text,unescape('%C6'),'AE');
    text = replace(text,unescape('%C7'),'C');
    text = replace(text,unescape('%C8'),'E');
    text = replace(text,unescape('%C9'),'E');
    text = replace(text,unescape('%CA'),'E');
    text = replace(text,unescape('%CB'),'E');
    text = replace(text,unescape('%CC'),'I');
    text = replace(text,unescape('%CD'),'I');
    text = replace(text,unescape('%CE'),'I');
    text = replace(text,unescape('%CF'),'I');
    text = replace(text,unescape('%D0'),'D');
    text = replace(text,unescape('%D1'),'N');
    text = replace(text,unescape('%D2'),'O');
    text = replace(text,unescape('%D3'),'O');
    text = replace(text,unescape('%D4'),'O');
    text = replace(text,unescape('%D5'),'O');
    text = replace(text,unescape('%D6'),'O');
    text = replace(text,unescape('%D7'),'O');
    text = replace(text,unescape('%D8'),'O');
    text = replace(text,unescape('%D9'),'U');
    text = replace(text,unescape('%DA'),'U');
    text = replace(text,unescape('%DB'),'U');
    text = replace(text,unescape('%DC'),'U');
    text = replace(text,unescape('%DD'),'Y');
    text = replace(text,unescape('%DE'),'P');
    text = replace(text,unescape('%DF'),'B');
    text = replace(text,unescape('%E0'),'a');
    text = replace(text,unescape('%E1'),'a');
    text = replace(text,unescape('%E2'),'a');
    text = replace(text,unescape('%E3'),'a');
    text = replace(text,unescape('%E4'),'a');
    text = replace(text,unescape('%E5'),'a');
    text = replace(text,unescape('%E6'),'ae');
    text = replace(text,unescape('%E7'),'c');
    text = replace(text,unescape('%E8'),'e');
    text = replace(text,unescape('%E9'),'e');
    text = replace(text,unescape('%EA'),'e');
    text = replace(text,unescape('%EB'),'e');
    text = replace(text,unescape('%EC'),'i');
    text = replace(text,unescape('%ED'),'i');
    text = replace(text,unescape('%EE'),'i');
    text = replace(text,unescape('%EF'),'i');
    text = replace(text,unescape('%F0'),'&');
    text = replace(text,unescape('%F1'),'n');
    text = replace(text,unescape('%F2'),'o');
    text = replace(text,unescape('%F3'),'o');
    text = replace(text,unescape('%F4'),'o');
    text = replace(text,unescape('%F5'),'o');
    text = replace(text,unescape('%F6'),'o');
    text = replace(text,unescape('%F7'),'o');
    text = replace(text,unescape('%F8'),'o');
    text = replace(text,unescape('%F9'),'u');
    text = replace(text,unescape('%FA'),'u');
    text = replace(text,unescape('%FB'),'u');
    text = replace(text,unescape('%FC'),'u');
    text = replace(text,unescape('%FD'),'y');
    text = replace(text,unescape('%FE'),'p');
    text = replace(text,unescape('%FF'),'y');

    document.test.output.value = text;
}

function replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

var output = '';
output += 'Agrave ' + '192 ' + 'C0 ' + unescape('%C0') + '\n';
output += 'Aacute ' + '193 ' + 'C1 ' + unescape('%C1') + '\n';
output += 'Acirc  ' + '194 ' + 'C2 ' + unescape('%C2') + '\n';
output += 'Atilde ' + '195 ' + 'C3 ' + unescape('%C3') + '\n';
output += 'Auml   ' + '196 ' + 'C4 ' + unescape('%C4') + '\n';
output += 'Aring  ' + '197 ' + 'C5 ' + unescape('%C5') + '\n';
output += 'AElig  ' + '198 ' + 'C6 ' + unescape('%C6') + '\n';
output += 'Ccedil ' + '199 ' + 'C7 ' + unescape('%C7') + '\n';
output += 'Egrave ' + '200 ' + 'C8 ' + unescape('%C8') + '\n';
output += 'Eacute ' + '201 ' + 'C9 ' + unescape('%C9') + '\n';
output += 'Ecirc  ' + '202 ' + 'CA ' + unescape('%CA') + '\n';
output += 'Euml   ' + '203 ' + 'CB ' + unescape('%CB') + '\n';
output += 'Igrave ' + '204 ' + 'CC ' + unescape('%CC') + '\n';
output += 'Iacute ' + '205 ' + 'CD ' + unescape('%CD') + '\n';
output += 'Icirc  ' + '206 ' + 'CE ' + unescape('%CE') + '\n';
output += 'Iuml   ' + '207 ' + 'CF ' + unescape('%CF') + '\n';
output += 'ETH    ' + '208 ' + 'D0 ' + unescape('%D0') + '\n';
output += 'Ntilde ' + '209 ' + 'D1 ' + unescape('%D1') + '\n';
output += 'Ograve ' + '210 ' + 'D2 ' + unescape('%D2') + '\n';
output += 'Oacute ' + '211 ' + 'D3 ' + unescape('%D3') + '\n';
output += 'Ocirc  ' + '212 ' + 'D4 ' + unescape('%D4') + '\n';
output += 'Otilde ' + '213 ' + 'D5 ' + unescape('%D5') + '\n';
output += 'Ouml   ' + '214 ' + 'D6 ' + unescape('%D6') + '\n';

output += 'Oslash ' + '216 ' + 'D8 ' + unescape('%D8') + '\n';
output += 'Ugrave ' + '217 ' + 'D9 ' + unescape('%D9') + '\n';
output += 'Uacute ' + '218 ' + 'DA ' + unescape('%DA') + '\n';
output += 'Ucirc  ' + '219 ' + 'DB ' + unescape('%DB') + '\n';
output += 'Uuml   ' + '220 ' + 'DC ' + unescape('%DC') + '\n';
output += 'Yacute ' + '221 ' + 'DD ' + unescape('%DD') + '\n';
output += 'THORN  ' + '222 ' + 'DE ' + unescape('%DE') + '\n';
output += 'szlig  ' + '223 ' + 'DF ' + unescape('%DF') + '\n';
output += 'agrave ' + '224 ' + 'E0 ' + unescape('%E0') + '\n';
output += 'aacute ' + '225 ' + 'E1 ' + unescape('%E1') + '\n';
output += 'acirc  ' + '226 ' + 'E2 ' + unescape('%E2') + '\n';
output += 'atilde ' + '227 ' + 'E3 ' + unescape('%E3') + '\n';
output += 'auml   ' + '228 ' + 'E4 ' + unescape('%E4') + '\n';
output += 'aring  ' + '229 ' + 'E5 ' + unescape('%E5') + '\n';
output += 'aelig  ' + '230 ' + 'E6 ' + unescape('%E6') + '\n';
output += 'ccedil ' + '231 ' + 'E7 ' + unescape('%E7') + '\n';
output += 'egrave ' + '232 ' + 'E8 ' + unescape('%E8') + '\n';
output += 'eacute ' + '233 ' + 'E9 ' + unescape('%E9') + '\n';
output += 'ecirc  ' + '234 ' + 'EA ' + unescape('%EA') + '\n';
output += 'euml   ' + '235 ' + 'EB ' + unescape('%EB') + '\n';
output += 'igrave ' + '236 ' + 'EC ' + unescape('%EC') + '\n';
output += 'iacute ' + '237 ' + 'ED ' + unescape('%ED') + '\n';
output += 'icirc  ' + '238 ' + 'EE ' + unescape('%EE') + '\n';
output += 'iuml   ' + '239 ' + 'EF ' + unescape('%EF') + '\n';
output += 'eth    ' + '240 ' + 'F0 ' + unescape('%F0') + '\n';
output += 'ntilde ' + '241 ' + 'F1 ' + unescape('%F1') + '\n';
output += 'ograve ' + '242 ' + 'F2 ' + unescape('%F2') + '\n';
output += 'oacute ' + '243 ' + 'F3 ' + unescape('%F3') + '\n';
output += 'ocirc  ' + '244 ' + 'F4 ' + unescape('%F4') + '\n';
output += 'otilde ' + '245 ' + 'F5 ' + unescape('%F5') + '\n';
output += 'ouml   ' + '246 ' + 'F6 ' + unescape('%F6') + '\n';

output += 'oslash ' + '248 ' + 'F8 ' + unescape('%F8') + '\n';
output += 'ugrave ' + '249 ' + 'F9 ' + unescape('%F9') + '\n';
output += 'uacute ' + '250 ' + 'FA ' + unescape('%FA') + '\n';
output += 'ucirc  ' + '251 ' + 'FB ' + unescape('%FB') + '\n';
output += 'uuml   ' + '252 ' + 'FC ' + unescape('%FC') + '\n';
output += 'yacute ' + '253 ' + 'FD ' + unescape('%FD') + '\n';
output += 'thorn  ' + '254 ' + 'FE ' + unescape('%FE') + '\n';
output += 'yuml   ' + '255 ' + 'FF ' + unescape('%FF');

document.test.output.value = output;

//--></SCRIPT>

©2018 Martin Webb