unit convertHTML;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, StrUtils;

function HTMLtoUTF8 (HTML: string): string;
procedure HTML2UTF8 (var s: String);

procedure UTF2HTML (var s : string);
function UTFtoHTML (utf8: string) : string;

implementation

type
  THTMLrec = record
    HTML,ch: String;
  end;

const
HTMLrec: array of THTMLrec = (
(HTML: '&amp;';Ch: '&'),
//latin
(HTML: '&Agrave;';Ch: 'À'),
(HTML: '&Aacute;';Ch: 'Á'),
(HTML: '&Acirc;';Ch: 'Â'),
(HTML: '&Atilde;';Ch: 'Ã'),
(HTML: '&Auml;';Ch: 'Ä'),
(HTML: '&Aring;';Ch: 'Å'),
(HTML: '&AElig;';Ch: 'Æ'),
(HTML: '&Ccedil;';Ch: 'Ç'),
(HTML: '&Egrave;';Ch: 'È'),
(HTML: '&Eacute;';Ch: 'É'),
(HTML: '&Ecirc;';Ch: 'Ê'),
(HTML: '&Euml;';Ch: 'Ë'),
(HTML: '&Lgrave;';Ch: 'Ì'),
(HTML: '&Lacute;';Ch: 'Ĺ'),
(HTML: '&Lcirc;';Ch: 'Î'),
(HTML: '&Luml;';Ch: 'Ï'),
(HTML: '&ETH;';Ch: 'Ð'),
(HTML: '&Ntilde;';Ch: 'Ñ'),
(HTML: '&Ograve;';Ch: 'Ò'),
(HTML: '&Oacute;';Ch: 'Ó'),
(HTML: '&Ocirc;';Ch: 'Ô'),
(HTML: '&Otilde;';Ch: 'Õ'),
(HTML: '&Ouml;';Ch: 'Ö'),
(HTML: '&Oslash;';Ch: 'Ø'),
(HTML: '&Ugrave;';Ch: 'Ù'),
(HTML: '&Uacute;';Ch: 'Ú'),
(HTML: '&Ucirc;';Ch: 'Û'),
(HTML: '&Uuml;';Ch: 'Ü'),
(HTML: '&Yacute;';Ch: 'Ý'),
(HTML: '&THORN;';Ch: 'Þ'),
(HTML: '&szlig;';Ch: 'ß'),
(HTML: '&agrave;';Ch: 'à'),
(HTML: '&aacute;';Ch: 'á'),
(HTML: '&acirc;';Ch: 'â'),
(HTML: '&atilde;';Ch: 'ã'),
(HTML: '&auml;';Ch: 'ä'),
(HTML: '&aring;';Ch: 'å'),
(HTML: '&aelig;';Ch: 'æ'),
(HTML: '&ccedil;';Ch: 'ç'),
(HTML: '&egrave;';Ch: 'è'),
(HTML: '&eacute;';Ch: 'é'),
(HTML: '&ecirc;';Ch: 'ê'),
(HTML: '&euml;';Ch: 'ë'),
(HTML: '&igrave;';Ch: 'ì'),
(HTML: '&iacute;';Ch: 'í'),
(HTML: '&icirc;';Ch: 'î'),
(HTML: '&iuml;';Ch: 'ï'),
(HTML: '&eth;';Ch: 'ð'),
(HTML: '&ntilde;';Ch: 'ñ'),
(HTML: '&ograve;';Ch: 'ò'),
(HTML: '&oacute;';Ch: 'ó'),
(HTML: '&ocirc;';Ch: 'ô'),
(HTML: '&otilde;';Ch: 'õ'),
(HTML: '&ouml;';Ch: 'ö'),
(HTML: '&oslash;';Ch: 'ø'),
(HTML: '&ugrave;';Ch: 'ù'),
(HTML: '&uacute;';Ch: 'ú'),
(HTML: '&ucirc;';Ch: 'û'),
(HTML: '&uuml;';Ch: 'ü'),
(HTML: '&yacute;';Ch: 'ý'),
(HTML: '&thorn;';Ch: 'þ'),
(HTML: '&yuml;';Ch: 'ÿ'),
(HTML: '&Amacr;';Ch: 'Ā'),
(HTML: '&amacr;';Ch: 'ā'),
(HTML: '&Abreve;';Ch: 'Ă'),
(HTML: '&abreve;';Ch: 'ă'),
(HTML: '&Aogon;';Ch: 'Ą'),
(HTML: '&aogon;';Ch: 'ą'),
(HTML: '&Cacute;';Ch: 'Ć'),
(HTML: '&cacute;';Ch: 'ć'),
(HTML: '&Ccirc;';Ch: 'Ĉ'),
(HTML: '&ccirc;';Ch: 'ĉ'),
(HTML: '&Cdot;';Ch: 'Ċ'),
(HTML: '&cdot;';Ch: 'ċ'),
(HTML: '&Ccaron;';Ch: 'Č'),
(HTML: '&ccaron;';Ch: 'č'),
(HTML: '&Dcaron;';Ch: 'Ď'),
(HTML: '&dcaron;';Ch: 'ď'),
(HTML: '&Dstrok;';Ch: 'Đ'),
(HTML: '&dstrok;';Ch: 'đ'),
(HTML: '&Emacr;';Ch: 'Ē'),
(HTML: '&emacr;';Ch: 'ē'),
(HTML: '&Edot;';Ch: 'Ė'),
(HTML: '&edot;';Ch: 'ė'),
(HTML: '&Eogon;';Ch: 'Ę'),
(HTML: '&eogon;';Ch: 'ę'),
(HTML: '&Ecaron;';Ch: 'Ě'),
(HTML: '&ecaron;';Ch: 'ě'),
(HTML: '&Gcirc;';Ch: 'Ĝ'),
(HTML: '&gcirc;';Ch: 'ĝ'),
(HTML: '&Gbreve;';Ch: 'Ğ'),
(HTML: '&gbreve;';Ch: 'ğ'),
(HTML: '&Gdot;';Ch: 'Ġ'),
(HTML: '&gdot;';Ch: 'ġ'),
(HTML: '&Gcedil;';Ch: 'Ģ'),
(HTML: '&Hcirc;';Ch: 'Ĥ'),
(HTML: '&hcirc;';Ch: 'ĥ'),
(HTML: '&Hstrok;';Ch: 'Ħ'),
(HTML: '&hstrok;';Ch: 'ħ'),
(HTML: '&Itilde;';Ch: 'Ĩ'),
(HTML: '&itilde;';Ch: 'ĩ'),
(HTML: '&Imacr;';Ch: 'Ī'),
(HTML: '&imacr;';Ch: 'ī'),
(HTML: '&Iogon;';Ch: 'Į'),
(HTML: '&iogon;';Ch: 'į'),
(HTML: '&Idot;';Ch: 'İ'),
(HTML: '&imath;';Ch: 'ı'),
(HTML: '&IJlig;';Ch: 'Ĳ'),
(HTML: '&ijlig;';Ch: 'ĳ'),
(HTML: '&Jcirc;';Ch: 'Ĵ'),
(HTML: '&jcirc;';Ch: 'ĵ'),
(HTML: '&Kcedil;';Ch: 'Ķ'),
(HTML: '&kcedil;';Ch: 'ķ'),
(HTML: '&kgreen;';Ch: 'ĸ'),
(HTML: '&lacute;';Ch: 'ĺ'),
(HTML: '&Lcedil;';Ch: 'Ļ'),
(HTML: '&lcedil;';Ch: 'ļ'),
(HTML: '&Lcaron;';Ch: 'Ľ'),
(HTML: '&lcaron;';Ch: 'ľ'),
(HTML: '&Lmidot;';Ch: 'Ŀ'),
(HTML: '&lmidot;';Ch: 'ŀ'),
(HTML: '&Lstrok;';Ch: 'Ł'),
(HTML: '&lstrok;';Ch: 'ł'),
(HTML: '&Nacute;';Ch: 'Ń'),
(HTML: '&nacute;';Ch: 'ń'),
(HTML: '&Ncedil;';Ch: 'Ņ'),
(HTML: '&ncedil;';Ch: 'ņ'),
(HTML: '&Ncaron;';Ch: 'Ň'),
(HTML: '&ncaron;';Ch: 'ň'),
(HTML: '&napos;';Ch: 'ŉ'),
(HTML: '&ENG;';Ch: 'Ŋ'),
(HTML: '&eng;';Ch: 'ŋ'),
(HTML: '&Omacr;';Ch: 'Ō'),
(HTML: '&omacr;';Ch: 'ō'),
(HTML: '&Odblac;';Ch: 'Ő'),
(HTML: '&odblac;';Ch: 'ő'),
(HTML: '&OElig;';Ch: 'Œ'),
(HTML: '&oelig;';Ch: 'œ'),
(HTML: '&Racute;';Ch: 'Ŕ'),
(HTML: '&racute;';Ch: 'ŕ'),
(HTML: '&Rcedil;';Ch: 'Ŗ'),
(HTML: '&rcedil;';Ch: 'ŗ'),
(HTML: '&Rcaron;';Ch: 'Ř'),
(HTML: '&rcaron;';Ch: 'ř'),
(HTML: '&Sacute;';Ch: 'Ś'),
(HTML: '&sacute;';Ch: 'ś'),
(HTML: '&Scirc;';Ch: 'Ŝ'),
(HTML: '&scirc;';Ch: 'ŝ'),
(HTML: '&Scedil;';Ch: 'Ş'),
(HTML: '&scedil;';Ch: 'ş'),
(HTML: '&Scaron;';Ch: 'Š'),
(HTML: '&scaron;';Ch: 'š'),
(HTML: '&Tcedil;';Ch: 'Ţ'),
(HTML: '&tcedil;';Ch: 'ţ'),
(HTML: '&Tcaron;';Ch: 'Ť'),
(HTML: '&tcaron;';Ch: 'ť'),
(HTML: '&Tstrok;';Ch: 'Ŧ'),
(HTML: '&tstrok;';Ch: 'ŧ'),
(HTML: '&Utilde;';Ch: 'Ũ'),
(HTML: '&utilde;';Ch: 'ũ'),
(HTML: '&Umacr;';Ch: 'Ū'),
(HTML: '&umacr;';Ch: 'ū'),
(HTML: '&Ubreve;';Ch: 'Ŭ'),
(HTML: '&ubreve;';Ch: 'ŭ'),
(HTML: '&Uring;';Ch: 'Ů'),
(HTML: '&uring;';Ch: 'ů'),
(HTML: '&Udblac;';Ch: 'Ű'),
(HTML: '&udblac;';Ch: 'ű'),
(HTML: '&Uogon;';Ch: 'Ų'),
(HTML: '&uogon;';Ch: 'ų'),
(HTML: '&Wcirc;';Ch: 'Ŵ'),
(HTML: '&wcirc;';Ch: 'ŵ'),
(HTML: '&Ycirc;';Ch: 'Ŷ'),
(HTML: '&ycirc;';Ch: 'ŷ'),
(HTML: '&Yuml;';Ch: 'Ÿ'),
(HTML: '&Zacute;';Ch: 'Ź'),
(HTML: '&zacute;';Ch: 'ź'),
(HTML: '&Zdot;';Ch: 'Ż'),
(HTML: '&zdot;';Ch: 'ż'),
(HTML: '&Zcaron;';Ch: 'Ž'),
(HTML: '&zcaron;';Ch: 'ž'),
// currency
(HTML: '&euro;';Ch: '€'),
(HTML: '&dollar;';Ch: '$'),
(HTML: '&cent;';Ch: '¢'),
(HTML: '&pound;';Ch: '£'),
(HTML: '&curren;';Ch: '¤'),
(HTML: '&yen;';Ch: '¥'),
// punctuation
(HTML: '&quot;';Ch: '"'),
//(HTML: '&apos;';Ch: ''''),
(HTML: '&laquo;';Ch: '«'),
(HTML: '&raquo;';Ch: '»'),
(HTML: '&lsquo;';Ch: '‘'),
(HTML: '&rsquo;';Ch: '’'),
(HTML: '&sbquo;';Ch: '‚'),
(HTML: '&ldquo;';Ch: '“'),
(HTML: '&rdquo;';Ch: '”'),
(HTML: '&bdquo;';Ch: '„'),
(HTML: '&lsaquo;';Ch: '‹'),
(HTML: '&rsaquo;';Ch: '›'),
(HTML: '&iexcl;';Ch: '¡'),
(HTML: '&brvbar;';Ch: '¦'),
(HTML: '&sect;';Ch: '§'),
(HTML: '&uml;';Ch: '¨'),
(HTML: '&ordf;';Ch: 'ª'),
(HTML: '&not;';Ch: '¬'),
(HTML: '&shy;';Ch: '­'),
(HTML: '&macr;';Ch: '¯'),
(HTML: '&sup2;';Ch: '²'),
(HTML: '&sup3;';Ch: '³'),
(HTML: '&acute;';Ch: '´'),
(HTML: '&micro;';Ch: 'µ'),
(HTML: '&para;';Ch: '¶'),
(HTML: '&middot;';Ch: '·'),
(HTML: '&cedil;';Ch: '¸'),
(HTML: '&sup1;';Ch: '¹'),
(HTML: '&ordm;';Ch: 'º'),
(HTML: '&iquest;';Ch: '¿'),
(HTML: '&hyphen;';Ch: '‐'),
(HTML: '&ndash;';Ch: '–'),
(HTML: '&mdash;';Ch: '—'),
(HTML: '&horbar;';Ch: '―'),
(HTML: '&Vert;';Ch: '‖'),
(HTML: '&dagger;';Ch: '†'),
(HTML: '&Dagger;';Ch: '‡'),
(HTML: '&bull;';Ch: '•'),
(HTML: '&nldr;';Ch: '‥'),
(HTML: '&hellip;';Ch: '…'),
(HTML: '&;';Ch: '‰'),
(HTML: '&pertenk;';Ch: '‱'),
(HTML: '&prime;';Ch: '′'),
(HTML: '&Prime;';Ch: '″'),
(HTML: '&tprime;';Ch: '‴'),
(HTML: '&bprime;';Ch: '‵'),
(HTML: '&oline;';Ch: '‾'),
(HTML: '&caret;';Ch: '⁁'),
(HTML: '&hybull;';Ch: '⁃'),
(HTML: '&frasl;';Ch: '⁄'),
(HTML: '&bsemi;';Ch: '⁏'),
(HTML: '&qprime;';Ch: '⁗'),
// misc
(HTML: '&copy;';Ch: '©'),
(HTML: '&reg;';Ch: '®'),
(HTML: '&trade;';Ch: '™'),
(HTML: '&nbsp;';Ch: #$C2#$A0),
(HTML: '&phone;';Ch: '☎'),
(HTML: '&female;';Ch: '♀'),
(HTML: '&male;';Ch: '♂'),
(HTML: '&commat;';Ch: '@'),
(HTML: '&Copf;';Ch: 'ℂ'),
(HTML: '&incare;';Ch: '℅'),
(HTML: '&gscr;';Ch: 'ℊ'),
(HTML: '&hamilt;';Ch: 'ℋ'),
(HTML: '&Hfr;';Ch: 'ℌ'),
(HTML: '&Hopf;';Ch: 'ℍ'),
(HTML: '&planckh;';Ch: 'ℎ'),
(HTML: '&planck;';Ch: 'ℏ'),
(HTML: '&Iscr;';Ch: 'ℐ'),
(HTML: '&image;';Ch: 'ℑ'),
(HTML: '&Lscr;';Ch: 'ℒ'),
(HTML: '&ell;';Ch: 'ℓ'),
(HTML: '&Nopf;';Ch: 'ℕ'),
(HTML: '&numero;';Ch: '№'),
(HTML: '&copysr;';Ch: '℗'),
(HTML: '&weierp;';Ch: '℘'),
(HTML: '&Popf;';Ch: 'ℙ'),
(HTML: '&Qopf;';Ch: 'ℚ'),
(HTML: '&Rscr;';Ch: 'ℛ'),
(HTML: '&real;';Ch: 'ℜ'),
(HTML: '&Ropf;';Ch: 'ℝ'),
(HTML: '&rx;';Ch: '℞'),
(HTML: '&Zopf;';Ch: 'ℤ'),
(HTML: '&mho;';Ch: '℧'),
(HTML: '&Zfr;';Ch: 'ℨ'),
(HTML: '&iiota;';Ch: '℩'),
(HTML: '&bernou;';Ch: 'ℬ'),
(HTML: '&Cfr;';Ch: 'ℭ'),
(HTML: '&escr;';Ch: 'ℯ'),
(HTML: '&Escr;';Ch: 'ℰ'),
(HTML: '&Fscr;';Ch: 'ℱ'),
(HTML: '&Mscr;';Ch: 'ℳ'),
(HTML: '&oscr;';Ch: 'ℴ'),
(HTML: '&alefsym;';Ch: 'ℵ'),
(HTML: '&beth;';Ch: 'ℶ'),
(HTML: '&gimel;';Ch: 'ℷ'),
(HTML: '&daleth;';Ch: 'ℸ'),
(HTML: '&DD;';Ch: 'ⅅ'),
(HTML: '&dd;';Ch: 'ⅆ'),
(HTML: '&ee;';Ch: 'ⅇ'),
(HTML: '&ii;';Ch: 'ⅈ'),
(HTML: '&starf;';Ch: '★'),
(HTML: '&star;';Ch: '☆'),
(HTML: '&loz;';Ch: '◊'),
(HTML: '&sung;';Ch: '♪'),
(HTML: '&flat;';Ch: '♭'),
(HTML: '&natural;';Ch: '♮'),
(HTML: '&sharp;';Ch: '♯'),
(HTML: '&check;';Ch: '✓'),
(HTML: '&cross;';Ch: '✗'),
(HTML: '&malt;';Ch: '✠'),
(HTML: '&sext;';Ch: '✶'),
(HTML: '&VerticalSeparator;';Ch: '❘'),
(HTML: '&lbbrk;';Ch: '❲'),
(HTML: '&rbbrk;';Ch: '❳'),
//fractions
(HTML: '&frac14;';Ch: '¼'),
(HTML: '&frac12;';Ch: '½'),
(HTML: '&frac34;';Ch: '¾'),
(HTML: '&frac13;';Ch: '⅓'),
(HTML: '&frac23;';Ch: '⅔'),
(HTML: '&frac15;';Ch: '⅕'),
(HTML: '&frac25;';Ch: '⅖'),
(HTML: '&frac35;';Ch: '⅗'),
(HTML: '&frac45;';Ch: '⅘'),
(HTML: '&frac16;';Ch: '⅙'),
(HTML: '&frac56;';Ch: '⅚'),
(HTML: '&frac18;';Ch: '⅛'),
(HTML: '&frac38;';Ch: '⅜'),
(HTML: '&frac58;';Ch: '⅝'),
(HTML: '&frac78;';Ch: '⅞'),
// math
(HTML: '&divide;';Ch: '÷'),
(HTML: '&ne;';Ch: '≠'),
(HTML: '&plusmn;';Ch: '±'),
(HTML: '&not;';Ch: '¬'),
(HTML: '&lt;';Ch: '<'),
(HTML: '&gt;';Ch: '>'),
(HTML: '&deg;';Ch: '°'),
(HTML: '&sup1;';Ch: '¹'),
(HTML: '&sup2;';Ch: '²'),
(HTML: '&sup3;';Ch: '³'),
(HTML: '&fnof;';Ch: 'ƒ'),
(HTML: '&percnt;';Ch: '%'),
(HTML: '&permil;';Ch: ''),
(HTML: '&pertenk;';Ch: '‱'),
(HTML: '&forall;';Ch: '∀'),
(HTML: '&comp;';Ch: '∁'),
(HTML: '&part;';Ch: '∂'),
(HTML: '&exist;';Ch: '∃'),
(HTML: '&nexist;';Ch: '∄'),
(HTML: '&empty;';Ch: '∅'),
(HTML: '&nabla;';Ch: '∇'),
(HTML: '&isin;';Ch: '∈'),
(HTML: '&notin;';Ch: '∉'),
(HTML: '&ni;';Ch: '∋'),
(HTML: '&notni;';Ch: '∌'),
(HTML: '&prod;';Ch: '∏'),
(HTML: '&coprod;';Ch: '∐'),
(HTML: '&sum;';Ch: '∑'),
(HTML: '&mnplus;';Ch: '∓'),
(HTML: '&plusdo;';Ch: '∔'),
(HTML: '&setminus;';Ch: '∖'),
(HTML: '&lowast;';Ch: '∗'),
(HTML: '&compfn;';Ch: '∘'),
(HTML: '&radic;';Ch: '√'),
(HTML: '&prop;';Ch: '∝'),
(HTML: '&infin;';Ch: '∞'),
(HTML: '&angrt;';Ch: '∟'),
(HTML: '&ang;';Ch: '∠'),
(HTML: '&angmsd;';Ch: '∡'),
(HTML: '&angsph;';Ch: '∢'),
(HTML: '&mid;';Ch: '∣'),
(HTML: '&nmid;';Ch: '∤'),
(HTML: '&parallel;';Ch: '∥'),
(HTML: '&npar;';Ch: '∦'),
(HTML: '&and;';Ch: '∧'),
(HTML: '&or;';Ch: '∨'),
(HTML: '&cap;';Ch: '∩'),
(HTML: '&cup;';Ch: '∪'),
(HTML: '&int;';Ch: '∫'),
(HTML: '&Int;';Ch: '∬'),
(HTML: '&iiint;';Ch: '∭'),
(HTML: '&conint;';Ch: '∮'),
(HTML: '&Conint;';Ch: '∯'),
(HTML: '&Cconint;';Ch: '∰'),
(HTML: '&cwint;';Ch: '∱'),
(HTML: '&cwconint;';Ch: '∲'),
(HTML: '&awconint;';Ch: '∳'),
(HTML: '&there4;';Ch: '∴'),
(HTML: '&because;';Ch: '∵'),
(HTML: '&ratio;';Ch: '∶'),
(HTML: '&Colon;';Ch: '∷'),
(HTML: '&minusd;';Ch: '∸'),
(HTML: '&mDDot;';Ch: '∺'),
(HTML: '&homtht;';Ch: '∻'),
(HTML: '&sim;';Ch: '∼'),
(HTML: '&bsim;';Ch: '∽'),
(HTML: '&ac;';Ch: '∾'),
(HTML: '&acd;';Ch: '∿'),
(HTML: '&wreath;';Ch: '≀'),
(HTML: '&nsim;';Ch: '≁'),
(HTML: '&esim;';Ch: '≂'),
(HTML: '&sime;';Ch: '≃'),
(HTML: '&nsime;';Ch: '≄'),
(HTML: '&cong;';Ch: '≅'),
(HTML: '&simne;';Ch: '≆'),
(HTML: '&ncong;';Ch: '≇'),
(HTML: '&asymp;';Ch: '≈'),
(HTML: '&nap;';Ch: '≉'),
(HTML: '&approxeq;';Ch: '≊'),
(HTML: '&apid;';Ch: '≋'),
(HTML: '&bcong;';Ch: '≌'),
(HTML: '&asympeq;';Ch: '≍'),
(HTML: '&bump;';Ch: '≎'),
(HTML: '&bumpe;';Ch: '≏'),
(HTML: '&esdot;';Ch: '≐'),
(HTML: '&eDot;';Ch: '≑'),
(HTML: '&efDot;';Ch: '≒'),
(HTML: '&erDot;';Ch: '≓'),
(HTML: '&colone;';Ch: '≔'),
(HTML: '&ecolon;';Ch: '≕'),
(HTML: '&ecir;';Ch: '≖'),
(HTML: '&cire;';Ch: '≗'),
(HTML: '&wedgeq;';Ch: '≙'),
(HTML: '&veeeq;';Ch: '≚'),
(HTML: '&trie;';Ch: '≜'),
(HTML: '&equest;';Ch: '≟'),
(HTML: '&equiv;';Ch: '≡'),
(HTML: '&nequiv;';Ch: '≢'),
(HTML: '&le;';Ch: '≤'),
(HTML: '&ge;';Ch: '≥'),
(HTML: '&lE;';Ch: '≦'),
(HTML: '&gE;';Ch: '≧'),
(HTML: '&lnE;';Ch: '≨'),
(HTML: '&gnE;';Ch: '≩'),
(HTML: '&Lt;';Ch: '≪'),
(HTML: '&Gt;';Ch: '≫'),
(HTML: '&between;';Ch: '≬'),
(HTML: '&NotCupCap;';Ch: '≭'),
(HTML: '&nlt;';Ch: '≮'),
(HTML: '&ngt;';Ch: '≯'),
(HTML: '&nle;';Ch: '≰'),
(HTML: '&nge;';Ch: '≱'),
(HTML: '&lsim;';Ch: '≲'),
(HTML: '&gsim;';Ch: '≳'),
(HTML: '&nlsim;';Ch: '≴'),
(HTML: '&ngsim;';Ch: '≵'),
(HTML: '&lg;';Ch: '≶'),
(HTML: '&gl;';Ch: '≷'),
(HTML: '&ntlg;';Ch: '≸'),
(HTML: '&ntgl;';Ch: '≹'),
(HTML: '&pr;';Ch: '≺'),
(HTML: '&sc;';Ch: '≻'),
(HTML: '&prcue;';Ch: '≼'),
(HTML: '&sccue;';Ch: '≽'),
(HTML: '&prsim;';Ch: '≾'),
(HTML: '&scsim;';Ch: '≿'),
(HTML: '&npr;';Ch: '⊀'),
(HTML: '&nsc;';Ch: '⊁'),
(HTML: '&sub;';Ch: '⊂'),
(HTML: '&sup;';Ch: '⊃'),
(HTML: '&nsub;';Ch: '⊄'),
(HTML: '&nsup;';Ch: '⊅'),
(HTML: '&sube;';Ch: '⊆'),
(HTML: '&supe;';Ch: '⊇'),
(HTML: '&nsube;';Ch: '⊈'),
(HTML: '&nsupe;';Ch: '⊉'),
(HTML: '&subne;';Ch: '⊊'),
(HTML: '&supne;';Ch: '⊋'),
(HTML: '&cupdot;';Ch: '⊍'),
(HTML: '&uplus;';Ch: '⊎'),
(HTML: '&sqsub;';Ch: '⊏'),
(HTML: '&sqsup;';Ch: '⊐'),
(HTML: '&sqsube;';Ch: '⊑'),
(HTML: '&sqsupe;';Ch: '⊒'),
(HTML: '&sqcap;';Ch: '⊓'),
(HTML: '&sqcup;';Ch: '⊔'),
(HTML: '&oplus;';Ch: '⊕'),
(HTML: '&ominus;';Ch: '⊖'),
(HTML: '&otimes;';Ch: '⊗'),
(HTML: '&osol;';Ch: '⊘'),
(HTML: '&odot;';Ch: '⊙'),
(HTML: '&ocir;';Ch: '⊚'),
(HTML: '&oast;';Ch: '⊛'),
(HTML: '&odash;';Ch: '⊝'),
(HTML: '&plusb;';Ch: '⊞'),
(HTML: '&minusb;';Ch: '⊟'),
(HTML: '&timesb;';Ch: '⊠'),
(HTML: '&sdotb;';Ch: '⊡'),
(HTML: '&vdash;';Ch: '⊢'),
(HTML: '&dashv;';Ch: '⊣'),
(HTML: '&top;';Ch: '⊤'),
(HTML: '&perp;';Ch: '⊥'),
(HTML: '&models;';Ch: '⊧'),
(HTML: '&vDash;';Ch: '⊨'),
(HTML: '&Vdash;';Ch: '⊩'),
(HTML: '&Vvdash;';Ch: '⊪'),
(HTML: '&VDash;';Ch: '⊫'),
(HTML: '&nvdash;';Ch: '⊬'),
(HTML: '&nvDash;';Ch: '⊭'),
(HTML: '&nVdash;';Ch: '⊮'),
(HTML: '&nVDash;';Ch: '⊯'),
(HTML: '&prurel;';Ch: '⊰'),
(HTML: '&vltri;';Ch: '⊲'),
(HTML: '&vrtri;';Ch: '⊳'),
(HTML: '&ltrie;';Ch: '⊴'),
(HTML: '&rtrie;';Ch: '⊵'),
(HTML: '&origof;';Ch: '⊶'),
(HTML: '&imof;';Ch: '⊷'),
(HTML: '&mumap;';Ch: '⊸'),
(HTML: '&hercon;';Ch: '⊹'),
(HTML: '&intcal;';Ch: '⊺'),
(HTML: '&veebar;';Ch: '⊻'),
(HTML: '&barvee;';Ch: '⊽'),
(HTML: '&angrtvb;';Ch: '⊾'),
(HTML: '&lrtri;';Ch: '⊿'),
(HTML: '&xwedge;';Ch: '⋀'),
(HTML: '&xvee;';Ch: '⋁'),
(HTML: '&xcap;';Ch: '⋂'),
(HTML: '&xcup;';Ch: '⋃'),
(HTML: '&diamond;';Ch: '⋄'),
(HTML: '&sdot;';Ch: '⋅'),
(HTML: '&Star;';Ch: '⋆'),
(HTML: '&divonx;';Ch: '⋇'),
(HTML: '&bowtie;';Ch: '⋈'),
(HTML: '&ltimes;';Ch: '⋉'),
(HTML: '&rtimes;';Ch: '⋊'),
(HTML: '&lthree;';Ch: '⋋'),
(HTML: '&rthree;';Ch: '⋌'),
(HTML: '&bsime;';Ch: '⋍'),
(HTML: '&cuvee;';Ch: '⋎'),
(HTML: '&cuwed;';Ch: '⋏'),
(HTML: '&Sub;';Ch: '⋐'),
(HTML: '&Sup;';Ch: '⋑'),
(HTML: '&Cap;';Ch: '⋒'),
(HTML: '&Cup;';Ch: '⋓'),
(HTML: '&fork;';Ch: '⋔'),
(HTML: '&epar;';Ch: '⋕'),
(HTML: '&ltdot;';Ch: '⋖'),
(HTML: '&gtdot;';Ch: '⋗'),
(HTML: '&Ll;';Ch: '⋘'),
(HTML: '&Gg;';Ch: '⋙'),
(HTML: '&leg;';Ch: '⋚'),
(HTML: '&gel;';Ch: '⋛'),
(HTML: '&cuepr;';Ch: '⋞'),
(HTML: '&cuesc;';Ch: '⋟'),
(HTML: '&nprcue;';Ch: '⋠'),
(HTML: '&nsccue;';Ch: '⋡'),
(HTML: '&nsqsube;';Ch: '⋢'),
(HTML: '&nsqsupe;';Ch: '⋣'),
(HTML: '&lnsim;';Ch: '⋦'),
(HTML: '&gnsim;';Ch: '⋧'),
(HTML: '&prnsim;';Ch: '⋨'),
(HTML: '&scnsim;';Ch: '⋩'),
(HTML: '&nltri;';Ch: '⋪'),
(HTML: '&nrtri;';Ch: '⋫'),
(HTML: '&nltrie;';Ch: '⋬'),
(HTML: '&nrtrie;';Ch: '⋭'),
(HTML: '&vellip;';Ch: '⋮'),
(HTML: '&ctdot;';Ch: '⋯'),
(HTML: '&utdot;';Ch: '⋰'),
(HTML: '&dtdot;';Ch: '⋱'),
(HTML: '&disin;';Ch: '⋲'),
(HTML: '&isinsv;';Ch: '⋳'),
(HTML: '&isins;';Ch: '⋴'),
(HTML: '&isindot;';Ch: '⋵'),
(HTML: '&notinvc;';Ch: '⋶'),
(HTML: '&notinvb;';Ch: '⋷'),
(HTML: '&isinE;';Ch: '⋹'),
(HTML: '&nisd;';Ch: '⋺'),
(HTML: '&xnis;';Ch: '⋻'),
(HTML: '&nis;';Ch: '⋼'),
(HTML: '&notnivc;';Ch: '⋽'),
(HTML: '&notnivb;';Ch: '⋾'),
(HTML: '&lceil;';Ch: '⌈'),
(HTML: '&rceil;';Ch: '⌉'),
(HTML: '&lfloor;';Ch: '⌊'),
(HTML: '&rfloor;';Ch: '⌋'),
(HTML: '&lang;';Ch: '〈'),
(HTML: '&rang;';Ch: '〉'),
// greek
(HTML: '&Alpha;';Ch: 'Α'),
(HTML: '&Beta;';Ch: 'Β'),
(HTML: '&Gamma;';Ch: 'Γ'),
(HTML: '&Delta;';Ch: 'Δ'),
(HTML: '&Epsilon;';Ch: 'Ε'),
(HTML: '&Zeta;';Ch: 'Ζ'),
(HTML: '&Eta;';Ch: 'Η'),
(HTML: '&Theta;';Ch: 'Θ'),
(HTML: '&Iota;';Ch: 'Ι'),
(HTML: '&Kappa;';Ch: 'Κ'),
(HTML: '&Lambda;';Ch: 'Λ'),
(HTML: '&Mu;';Ch: 'Μ'),
(HTML: '&Nu;';Ch: 'Ν'),
(HTML: '&Xi;';Ch: 'Ξ'),
(HTML: '&Omicron;';Ch: 'Ο'),
(HTML: '&Pi;';Ch: 'Π'),
(HTML: '&Rho;';Ch: 'Ρ'),
(HTML: '&Sigma;';Ch: 'Σ'),
(HTML: '&Tau;';Ch: 'Τ'),
(HTML: '&Upsilon;';Ch: 'Υ'),
(HTML: '&Phi;';Ch: 'Φ'),
(HTML: '&Chi;';Ch: 'Χ'),
(HTML: '&Psi;';Ch: 'Ψ'),
(HTML: '&Omega;';Ch: 'Ω'),
(HTML: '&alpha;';Ch: 'α'),
(HTML: '&beta;';Ch: 'β'),
(HTML: '&gamma;';Ch: 'γ'),
(HTML: '&delta;';Ch: 'δ'),
(HTML: '&epsilon;';Ch: 'ε'),
(HTML: '&zeta;';Ch: 'ζ'),
(HTML: '&eta;';Ch: 'η'),
(HTML: '&theta;';Ch: 'θ'),
(HTML: '&iota;';Ch: 'ι'),
(HTML: '&kappa;';Ch: 'κ'),
(HTML: '&lambda;';Ch: 'λ'),
(HTML: '&mu;';Ch: 'μ'),
(HTML: '&nu;';Ch: 'ν'),
(HTML: '&xi;';Ch: 'ξ'),
(HTML: '&omicron;';Ch: 'ο'),
(HTML: '&pi;';Ch: 'π'),
(HTML: '&rho;';Ch: 'ρ'),
(HTML: '&sigmaf;';Ch: 'ς'),
(HTML: '&sigma;';Ch: 'σ'),
(HTML: '&tau;';Ch: 'τ'),
(HTML: '&upsilon;';Ch: 'υ'),
(HTML: '&phi;';Ch: 'φ'),
(HTML: '&chi;';Ch: 'χ'),
(HTML: '&psi;';Ch: 'ψ'),
(HTML: '&omega;';Ch: 'ω'),
(HTML: '&thetasym;';Ch: 'ϑ'),
(HTML: '&upsih;';Ch: 'ϒ'),
(HTML: '&piv;';Ch: 'ϖ')
); // HTMLrec


function HTMLtoUTF8 (HTML: string): string;
begin
  HTML2UTF8(HTML);
  result := HTML;
end;

procedure HTML2UTF8 (var s: String);
var p,q, i : integer;
tmp : string;
begin
p := 0;
repeat
p := posEx ('&',s,p+1);
if p = 0 then exit;
q := PosEx(';',s,p+1);
if q > p then
   begin
    tmp :=  copy (s,p,q-p+1);
    for i := 0 to high(HTMLrec) do
      begin
        if tmp= HTMLrec[i].HTML then
           begin
            delete (s,p,length(HTMLrec[i].html));
            insert(HTMLrec[i].ch,s,p);
            break;
           end;  // if
      end; // for i
   end;// q> p
  until p = 0;
end;

procedure UTF2HTML (var s : string);
var i,p : Integer;
begin
  for i := low(HTMLrec) to high(HTMLrec) do
    begin
      repeat
        p := pos (HTMLrec[i].ch,s);
        if p > 0 then
           begin
             delete (s,p,length(HTMLrec[i].ch));
             insert (HTMLrec[i].HTML,s,p);
           end;
      until p=0;
    end; // i
end;

function UTFtoHTML (utf8: string) : string;
begin
UTF2HTML(utf8);
result := utf8;
end;

end.

