I've modified "Diff" agent into database, forcing output with XMLEncode function, somting like this:
getNumberedLines( XmlEncode(docOld.GetItemValue(FLD_CONTENT)(0)))
and i've extended the function "XMLEncode" into Script Library "GeneralFunctions" replacing "some" possible special characters (not all!!) in this way:
Const AMPERSAND = "&amp;"<br/>
Const APOSTROPHE = "&apos;"<br/>
Const DBL_QUOTES = "&quot;"<br/>
Const GT = "&gt;"<br/>
Const LT = "&lt;"<br/>
Const INVERTED_EXCLAMATION_MARK = "&iexcl;"<br/>
Const CENT = "&cent"<br/>
Const POUND = "&pound;"<br/>
Const CURR = "&curren;"<br/>
Const YEN = "&yen;"<br/>
Const BROKEN_VERTICAL_MARK = "&brvbar;"<br/>
Const SECTION = "&sect;"<br/>
Const DIARESIS = "&uml;"<br/>
Const COPYRIGHT = "&copy;"<br/>
Const FEMININE_ORDINAL_INDICATOR = "&ordf;"<br/>
Const ANGLE_QUOTATION_MARK = "&laquo;"<br/>
Const NEGATION = "&not;"<br/>
Const SOFTHYPHEN = "&shy;"<br/>
Const REGISTERED_TRADE_MARK = "&reg;"<br/>
Const MACRON = "&macr;"<br/>
Const DEGREE = "&deg;"<br/>
Const PLUS_OR_MINUS = "&plusmn;"<br/>
Const SUPERSCRIPT_1 = "&sup1;"<br/>
Const SUPERSCRIPT_2 = "&sup2;"<br/>
Const SUPERSCRIPT_3 = "&sup3;"<br/>
Const ACUTE = "&acute;"<br/>
Const MICRO = "&micro;"<br/>
Const PARAGRAPH = "&para;"<br/>
Const MIDDLEDOT = "&middot;"<br/>
Const CEDILLA = "&cedil;"<br/>
Const MASCULINE_ORDINAL_INDICATOR = "&ordm;"<br/>
Const ANGLE_QUOTATION_MARK_RIGHT = "&raquo;"<br/>
Const FRACTION_14 = "&frac14;"<br/>
Const FRACTION_12 = "&frac12;"<br/>
Const FRACTION_34 = "&frac34;"<br/>
Const INVERTED_QUESTION_MARK = "&iquest;"<br/>
Const MULTIPLICATION = "&times;"<br/>
Const DIVISION = "&divide;"<br/>
Const CAPITAL_A_GRAVE_ACCENT = "&Agrave;"<br/>
Const CAPITAL_A_ACUTE_ACCENT = "&Aacute;"<br/>
Const CAPITAL_A_CIRCUMFLEX_ACCENT = "&Acirc;"<br/>
Const CAPITAL_A_TILDE = "&Atilde;"<br/>
Const CAPITAL_A_UMLAUT_MARK = "&Auml;"<br/>
Const CAPITAL_A_RING = "&Aring;"<br/>
Const CAPITAL_AE = "&AElig;"<br/>
Const CAPITAL_C_CEDILLA = "&Ccedil;"<br/>
Const CAPITAL_E_GRAVE_ACCENT = "&Egrave;"<br/>
Const CAPITAL_E_ACUTE_ACCENT = "&Eacute;"<br/>
Const CAPITAL_E_CIRCUMFLEX_ACCENT = "&Ecirc;"<br/>
Const CAPITAL_E_UMLAUT_MARK = "&Euml;"<br/>
Const CAPITAL_I_GRAVE_ACCENT = "&Igrave;"<br/>
Const CAPITAL_I_ACUTE_ACCENT = "&Iacute;"<br/>
Const CAPITAL_I_CIRCUMFLEX_ACCENT = "&Icirc;"<br/>
Const CAPITAL_I_UMLAUT_MARK = "&Iuml;"<br/>
Const CAPITAL_ETH_ICELANDIC = "&ETH;"<br/>
Const CAPITAL_N_TILDE = "&Ntilde;"<br/>
Const CAPITAL_O_GRAVE_ACCENT = "&Ograve;"<br/>
Const CAPITAL_O_ACUTE_ACCENT = "&Oacute;"<br/>
Const CAPITAL_O_CIRCUMFLEX_ACCENT = "&Ocirc;"<br/>
Const CAPITAL_O_TILDE = "&Otilde;"<br/>
Const CAPITAL_O_UMLAUT_MARK = "&Ouml;"<br/>
Const CAPITAL_O_SLASH = "&Oslash;"<br/>
Const CAPITAL_U_GRAVE_ACCENT = "&Ugrave;"<br/>
Const CAPITAL_U_ACUTE_ACCENT = "&Uacute;"<br/>
Const CAPITAL_U_CIRCUMFLEX_ACCENT = "&Ucirc;"<br/>
Const CAPITAL_U_UMLAUT_MARK = "&Uuml;"<br/>
Const CAPITAL_Y_ACUTE_ACCENT = "&Yacute;"<br/>
Const CAPITAL_THORN_ICELANDIC = "&THORN;"<br/>
Const SMALL_SHARP_S_GERMAN = "&szlig;" <br/>
Const SMALL_A_GRAVE_ACCENT = "&agrave;"<br/>
Const SMALL_A_ACUTE_ACCENT = "&aacute;"<br/>
Const SMALL_A_CIRCUMFLEX_ACCENT = "&acirc;"<br/>
Const SMALL_A_TILDE = "&atilde;"<br/>
Const SMALL_A_UMLAUT_MARK = "&auml;"<br/>
Const SMALL_A_RING = "&aring;"<br/>
Const SMALL_AE = "&aElig;"<br/>
Const SMALL_C_CEDILLA = "&ccedil;"<br/>
Const SMALL_E_GRAVE_ACCENT = "&egrave;"<br/>
Const SMALL_E_ACUTE_ACCENT = "&eacute;"<br/>
Const SMALL_E_CIRCUMFLEX_ACCENT = "&ecirc;"<br/>
Const SMALL_E_UMLAUT_MARK = "&euml;"<br/>
Const SMALL_I_GRAVE_ACCENT = "&igrave;"<br/>
Const SMALL_I_ACUTE_ACCENT = "&iacute;"<br/>
Const SMALL_I_CIRCUMFLEX_ACCENT = "&icirc;"<br/>
Const SMALL_I_UMLAUT_MARK = "&iuml;" <br/>
Const SMALL_ETH_ICELANDIC = "&eth;"<br/>
Const SMALL_N_TILDE = "&ntilde;"<br/>
Const SMALL_O_GRAVE_ACCENT = "&ograve;"<br/>
Const SMALL_O_ACUTE_ACCENT = "&oacute;"<br/>
Const SMALL_O_CIRCUMFLEX_ACCENT = "&ocirc;"<br/>
Const SMALL_O_TILDE = "&otilde;"<br/>
Const SMALL_O_UMLAUT_MARK = "&ouml;"<br/>
Const SMALL_O_SLASH = "&oslash;"<br/>
Const SMALL_U_GRAVE_ACCENT = "&ugrave;"<br/>
Const SMALL_U_ACUTE_ACCENT = "&uacute;"<br/>
Const SMALL_U_CIRCUMFLEX_ACCENT = "&ucirc;"<br/>
Const SMALL_U_UMLAUT_MARK = "&uuml;"<br/>
Const SMALL_Y_ACUTE_ACCENT = "&yacute;"<br/>
Const SMALL_Y_UMLAUT_MARK = "&yuml;"<br/>
Const SMALL_THORN_ICELANDIC = "&thorn;"<br/>
<br/>
strReturn = Replace(data, {&}, AMPERSAND)<br/>
strReturn = Replace(strReturn, {'}, APOSTROPHE)<br/>
strReturn = Replace(strReturn, {<}, LT)<br/>
strReturn = Replace(strReturn, {>}, GT)<br/>
strReturn = Replace(strReturn, {"}, DBL_QUOTES)<br/>
<br/>
strReturn = Replace(strReturn, {¡}, INVERTED_EXCLAMATION_MARK)<br/>
strReturn = Replace(strReturn, {¢}, CENT)<br/>
strReturn = Replace(strReturn, {£}, POUND)<br/>
strReturn = Replace(strReturn, {¤}, CURR)<br/>
strReturn = Replace(strReturn, {¥}, YEN)<br/>
strReturn = Replace(strReturn, {¦}, BROKEN_VERTICAL_MARK)<br/>
strReturn = Replace(strReturn, {§}, SECTION)<br/>
strReturn = Replace(strReturn, {¨}, DIARESIS)<br/>
strReturn = Replace(strReturn, {©}, COPYRIGHT)<br/>
strReturn = Replace(strReturn, {ª}, FEMININE_ORDINAL_INDICATOR)<br/>
strReturn = Replace(strReturn, {«}, ANGLE_QUOTATION_MARK)<br/>
strReturn = Replace(strReturn, {¬}, NEGATION)<br/>
strReturn = Replace(strReturn, {}, SOFTHYPHEN)<br/>
strReturn = Replace(strReturn, {®}, REGISTERED_TRADE_MARK)<br/>
strReturn = Replace(strReturn, {¯}, MACRON)<br/>
strReturn = Replace(strReturn, {°}, DEGREE)<br/>
strReturn = Replace(strReturn, {±}, PLUS_OR_MINUS)<br/>
strReturn = Replace(strReturn, {¹}, SUPERSCRIPT_1)<br/>
strReturn = Replace(strReturn, {²}, SUPERSCRIPT_2)<br/>
strReturn = Replace(strReturn, {³}, SUPERSCRIPT_3)<br/>
strReturn = Replace(strReturn, {´}, ACUTE)<br/>
strReturn = Replace(strReturn, {µ}, MICRO)<br/>
strReturn = Replace(strReturn, {¶}, PARAGRAPH)<br/>
strReturn = Replace(strReturn, {·}, MIDDLEDOT) <br/>
strReturn = Replace(strReturn, {¸}, CEDILLA)<br/>
strReturn = Replace(strReturn, {º}, MASCULINE_ORDINAL_INDICATOR)<br/>
strReturn = Replace(strReturn, {»}, ANGLE_QUOTATION_MARK_RIGHT)<br/>
strReturn = Replace(strReturn, {¼}, FRACTION_14)<br/>
strReturn = Replace(strReturn, {½}, FRACTION_12)<br/>
strReturn = Replace(strReturn, {¾}, FRACTION_34)<br/>
strReturn = Replace(strReturn, {¿}, INVERTED_QUESTION_MARK)<br/>
strReturn = Replace(strReturn, {×}, MULTIPLICATION)<br/>
strReturn = Replace(strReturn, {÷}, DIVISION)<br/>
strReturn = Replace(strReturn, {À}, CAPITAL_A_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {Á}, CAPITAL_A_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Â}, CAPITAL_A_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {Ã}, CAPITAL_A_TILDE)<br/>
strReturn = Replace(strReturn, {Ä}, CAPITAL_A_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {Å}, CAPITAL_A_RING)<br/>
strReturn = Replace(strReturn, {Æ}, CAPITAL_AE)<br/>
strReturn = Replace(strReturn, {Ç}, CAPITAL_C_CEDILLA)<br/>
strReturn = Replace(strReturn, {È}, CAPITAL_E_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {É}, CAPITAL_E_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Ê}, CAPITAL_E_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {Ë}, CAPITAL_E_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {Ì}, CAPITAL_I_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {Í}, CAPITAL_I_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Î}, CAPITAL_I_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {Ï}, CAPITAL_I_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {Ð}, CAPITAL_ETH_ICELANDIC)<br/>
strReturn = Replace(strReturn, {Ñ}, CAPITAL_N_TILDE)<br/>
strReturn = Replace(strReturn, {Ò}, CAPITAL_O_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {Ó}, CAPITAL_O_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Ô}, CAPITAL_O_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {Õ}, CAPITAL_O_TILDE)<br/>
strReturn = Replace(strReturn, {Ö}, CAPITAL_O_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {Ø}, CAPITAL_O_SLASH)<br/>
strReturn = Replace(strReturn, {Ù}, CAPITAL_U_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {Ú}, CAPITAL_U_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Û}, CAPITAL_U_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {Ü}, CAPITAL_U_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {Ý}, CAPITAL_Y_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {Þ}, CAPITAL_THORN_ICELANDIC)<br/>
strReturn = Replace(strReturn, {ß}, SMALL_SHARP_S_GERMAN)<br/>
strReturn = Replace(strReturn, {à}, SMALL_A_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {á}, SMALL_A_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {â}, SMALL_A_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {ã}, SMALL_A_TILDE)<br/>
strReturn = Replace(strReturn, {ä}, SMALL_A_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {å}, SMALL_A_RING)<br/>
strReturn = Replace(strReturn, {æ}, SMALL_AE)<br/>
strReturn = Replace(strReturn, {ç}, SMALL_C_CEDILLA)<br/>
strReturn = Replace(strReturn, {è}, SMALL_E_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {é}, SMALL_E_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {ê}, SMALL_E_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {ë}, SMALL_E_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {ì}, SMALL_I_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {í}, SMALL_I_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {î}, SMALL_I_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {ï}, SMALL_I_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {ð}, SMALL_ETH_ICELANDIC)<br/>
strReturn = Replace(strReturn, {ñ}, SMALL_N_TILDE)<br/>
strReturn = Replace(strReturn, {ò}, SMALL_O_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {ó}, SMALL_O_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {ô}, SMALL_O_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {õ}, SMALL_O_TILDE )<br/>
strReturn = Replace(strReturn, {ö}, SMALL_O_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {ø}, SMALL_O_SLASH)<br/>
strReturn = Replace(strReturn, {ù}, SMALL_U_GRAVE_ACCENT)<br/>
strReturn = Replace(strReturn, {ú}, SMALL_U_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {û}, SMALL_U_CIRCUMFLEX_ACCENT)<br/>
strReturn = Replace(strReturn, {ü}, SMALL_U_UMLAUT_MARK)<br/>
strReturn = Replace(strReturn, {ý}, SMALL_Y_ACUTE_ACCENT)<br/>
strReturn = Replace(strReturn, {ÿ}, SMALL_Y_UMLAUT_MARK )<br/>
strReturn = Replace(strReturn, {þ}, SMALL_THORN_ICELANDIC)<br/>
<br/>
XmlEncode = strReturn<br/>
Then, in wiki.js, i force the unescape of string that i get out, in this way:
document.getElementById("diff").innerHTML = unescape(strHTML);
now it works!
It's enough for me, but i thing that it will be extended again. Any other solution will be appreciated
Thanks
Andrea