cancel
Showing results for 
Search instead for 
Did you mean: 

Replacing special characters in SAP IdM

former_member190695
Participant
0 Kudos

Hi Guys,

I have a requirement to use special characters such as (Æ, Ø, etc.) in SAP IdM 7.2 SP7 with MS SQL 2008 R2.

To calculate and set the mail attribute I need to convert these special chars into standard Latin chars accepted by ADS.

I am using the function replace(/Æ/g, "AE"); but this seems not to work with special chars.

Although it does work with standard chars such as A-Z.

Any tips or ideas?

Thanks very much.

Regards,

Ridouan

Accepted Solutions (1)

Accepted Solutions (1)

terovirta
Active Contributor
0 Kudos

Hi Ridouan,

what I have is the puke below . Cannot take much credit as it's result of google-coding and cannot remember anymore if it's the last working version. Hope it helps..

// Main function: custom_converSpecChars

var stripstring =
'AAAAAAACEEEEIIII'+
'DNOOOOO.OUUUUY..'+
'aaaaaaaceeeeiiii'+
'dnooooo.ouuuuy.y'+
'AaAaAaCcCcCcCcDd'+
'DdEeEeEeEeEeGgGg'+
'GgGgHhHhIiIiIiIi'+
'IiIiJjKkkLlLlLlL'+
'lJlNnNnNnnNnOoOo'+
'OoOoRrRrRrSsSsSs'+
'SsTtTtTtUuUuUuUu'+
'UuUuWwYyYZzZzZz.';

function custom_converSpecChars(str){
var answer='';
str = String(str);
for(i = 0; i < str.length; i ++){
  var ch=str[i];
  var chindex=ch.charCodeAt(0)-192; // Index of character code in the strip string
  if (chindex >= 0 && chindex < stripstring.length){ // Character is within our table, so we can strip the accent...
   var outch = stripstring.charAt(chindex); // ...unless it was shown as a '.'
   if (outch != '.') ch = outch;
  }
  answer += ch;
}

answer = answer.replace(/[^QWERTYUIOPASDFGHJKLZXCVBNMqwerttyuiopasdfghjklzxcvbnm1234567890]/g,'');
return answer;
}

function custom_converSpecChars2(Par){

//http://www.fileformat.info/info/unicode/char/00d8/index.htm

uErrMsg(1, "custom_converSpecChars: Par=" + Par);
var tmpStr = String(Par);
for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {
uErrMsg(1, " seek=" + defaultDiacriticsRemovalMap[i].letters + " replace=" + defaultDiacriticsRemovalMap[i].base);
//  tmpStr = String(Par).replace(defaultDiacriticsRemovalMap[i].letters, defaultDiacriticsRemovalMap[i].base);
  tmpStr = tmpStr.replace(new RegExp(defaultDiacriticsRemovalMap[i].letters, "g"), defaultDiacriticsRemovalMap[i].base);
}
uErrMsg(1, "custom_converSpecChars: tmpStr=" + tmpStr);
tmpStr = tmpStr.toUpperCase();
// tmpStr = tmpStr.replace(/[^QWERTYUIOPASDFGHJKLZXCVBNM]/g,'');
// tmpStr = tmpStr.replace(/[^QWERTYUIOPASDFGHJKLZXCVBNM1234567890]/g,'');
uErrMsg(1, "custom_converSpecChars: tmpStr=" + tmpStr);

if (Par != tmpStr){
  uErrMsg(1,"custom_converSpecChars: converted Par=" + Par + " remaining specials removed tmpStr=" + tmpStr);
}

return tmpStr;
}

/* removed u 1EA3 a with hook above
*/
var defaultDiacriticsRemovalMap = [
    {"base":"","letters":" "},
    {"base":"","letters":"."},
    {"base":"","letters":"-"},
    {"base":"","letters":"("},
    {"base":"","letters":")"},
    {"base":"","letters":"["},
    {"base":"","letters":"]"},

    {"base":"c","letters":"ç"},
    {"base":"c","letters":"Ã?"},

    {"base":"o","letters":"ö"},
    {"base":"a","letters":"ä"},
    {"base":"u","letters":"ü"},
    {"base":"","letters":"ª"},
    {"base":"n","letters":"ñ"},
    {"base":"ss","letters":"Ã?"},

    {"base":"A", "letters":/\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/g},
    {"base":"AA","letters":/\uA732/g},
    {"base":"AE","letters":/\u00C6\u01FC\u01E2/g},
    {"base":"AO","letters":/\uA734/g},
    {"base":"AU","letters":/\uA736/g},
    {"base":"AV","letters":/\uA738\uA73A/g},
    {"base":"AY","letters":/\uA73C/g},
    {"base":"B", "letters":/\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181/g},
    {"base":"C", "letters":/\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E/g},
    {"base":"D", "letters":/\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779/g},
    {"base":"DZ","letters":/\u01F1\u01C4/g},
    {"base":"Dz","letters":/\u01F2\u01C5/g},
    {"base":"E", "letters":/\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E/g},
    {"base":"F", "letters":/\u0046\u24BB\uFF26\u1E1E\u0191\uA77B/g},
    {"base":"G", "letters":/\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E/g},
    {"base":"H", "letters":/\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D/g},
    {"base":"I", "letters":/\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197/g},
    {"base":"J", "letters":/\u004A\u24BF\uFF2A\u0134\u0248/g},
    {"base":"K", "letters":/\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2/g},
    {"base":"L", "letters":/\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780/g},
    {"base":"LJ","letters":/\u01C7/g},
    {"base":"Lj","letters":/\u01C8/g},
    {"base":"M", "letters":/\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C/g},
    {"base":"N", "letters":/\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4/g},
    {"base":"NJ","letters":/\u01CA/g},
    {"base":"Nj","letters":/\u01CB/g},
    {"base":"O", "letters":/\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C/g},
    {"base":"OI","letters":/\u01A2/g},
    {"base":"OO","letters":/\uA74E/g},
    {"base":"OU","letters":/\u0222/g},
    {"base":"P", "letters":/\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754/g},
    {"base":"Q", "letters":/\u0051\u24C6\uFF31\uA756\uA758\u024A/g},
    {"base":"R", "letters":/\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782/g},
    {"base":"S", "letters":/\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784/g},
    {"base":"T", "letters":/\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786/g},
    {"base":"TZ","letters":/\uA728/g},
    {"base":"U", "letters":/\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244/g},
    {"base":"V", "letters":/\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245/g},
    {"base":"VY","letters":/\uA760/g},
    {"base":"W", "letters":/\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72/g},
    {"base":"X", "letters":/\u0058\u24CD\uFF38\u1E8A\u1E8C/g},
    {"base":"Y", "letters":/\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE/g},
    {"base":"Z", "letters":/\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762/g},
    {"base":"a", "letters":/\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250/g},
    {"base":"aa","letters":/\uA733/g},
    {"base":"ae","letters":/\u00E6\u01FD\u01E3/g},
    {"base":"ao","letters":/\uA735/g},
    {"base":"au","letters":/\uA737/g},
    {"base":"av","letters":/\uA739\uA73B/g},
    {"base":"ay","letters":/\uA73D/g},
    {"base":"b", "letters":/\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253/g},
    {"base":"c", "letters":/\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184/g},
    {"base":"d", "letters":/\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A/g},
    {"base":"dz","letters":/\u01F3\u01C6/g},
    {"base":"e", "letters":/\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD/g},
    {"base":"f", "letters":/\u0066\u24D5\uFF46\u1E1F\u0192\uA77C/g},
    {"base":"g", "letters":/\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F/g},
    {"base":"h", "letters":/\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265/g},
    {"base":"hv","letters":/\u0195/g},
    {"base":"i", "letters":/\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131/g},
    {"base":"j", "letters":/\u006A\u24D9\uFF4A\u0135\u01F0\u0249/g},
    {"base":"k", "letters":/\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3/g},
    {"base":"l", "letters":/\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747/g},
    {"base":"lj","letters":/\u01C9/g},
    {"base":"m", "letters":/\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F/g},
    {"base":"n", "letters":/\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5/g},
    {"base":"nj","letters":/\u01CC/g},
    {"base":"o", "letters":/\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275/g},
    {"base":"oi","letters":/\u01A3/g},
    {"base":"ou","letters":/\u0223/g},
    {"base":"oo","letters":/\uA74F/g},
    {"base":"p","letters":/\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755/g},
    {"base":"q","letters":/\u0071\u24E0\uFF51\u024B\uA757\uA759/g},
    {"base":"r","letters":/\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783/g},
    {"base":"s","letters":/\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B/g},
    {"base":"t","letters":/\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787/g},
    {"base":"tz","letters":/\uA729/g},
    {"base":"u","letters":/\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289/g},
    {"base":"v","letters":/\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C/g},
    {"base":"vy","letters":/\uA761/g},
    {"base":"w","letters":/\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73/g},
    {"base":"x","letters":/\u0078\u24E7\uFF58\u1E8B\u1E8D/g},
    {"base":"y","letters":/\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF/g},
    {"base":"z","letters":/\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763/g}
    ];

regards, Tero

former_member190695
Participant
0 Kudos

Thanks Tero!. Unfortunately IdM doesn't recognize the special characters although the chars are printed correctly functions such as indexOf, uReplaceString, replace, etc. do not seems to recognize the special characters.

I will create an OSS message and update this discussion.

Regards,

Ridouan 

former_member190695
Participant
0 Kudos

I recall this message as the first script resolved my issue, so far so good!.

Many thanks Tero.

Answers (0)