维基百科:AutoEd/unicodify.js
//
function autoEdUnicodify(str) { //MAIN FUNCTION describes list of fixes
//Greek symbols (capitalization matters on all)
str = str.replace(new RegExp('\&Alpha\;', 'g'), 'Α');
str = str.replace(new RegExp('\&Beta\;', 'g'), 'Β');
str = str.replace(new RegExp('\&Gamma\;', 'g'), 'Γ');
str = str.replace(new RegExp('\&Delta\;', 'g'), 'Δ');
str = str.replace(new RegExp('\&Epsilon\;', 'g'), 'Ε');
str = str.replace(new RegExp('\&Zeta\;', 'g'), 'Ζ');
str = str.replace(new RegExp('\&Eta\;', 'g'), 'Η');
str = str.replace(new RegExp('\&Theta\;', 'g'), 'Θ');
str = str.replace(new RegExp('\&Ioeta\;', 'g'), 'Ι');
str = str.replace(new RegExp('\&Kappa\;', 'g'), 'Κ');
str = str.replace(new RegExp('\&Lambda\;', 'g'), 'Λ');
str = str.replace(new RegExp('\&Mu\;', 'g'), 'Μ');
str = str.replace(new RegExp('\&Nu\;', 'g'), 'Ν');
str = str.replace(new RegExp('\&Xi\;', 'g'), 'Ξ');
str = str.replace(new RegExp('\&Omicron\;', 'g'), 'Ο');
str = str.replace(new RegExp('\&Pi\;', 'g'), 'Π');
str = str.replace(new RegExp('\&Rho\;', 'g'), 'Ρ');
str = str.replace(new RegExp('\&Sigma\;', 'g'), 'Σ');
str = str.replace(new RegExp('\&Tau\;', 'g'), 'Τ');
str = str.replace(new RegExp('\&Upsilon\;', 'g'), 'Υ');
str = str.replace(new RegExp('\&Phi\;', 'g'), 'Φ');
str = str.replace(new RegExp('\&Chi\;', 'g'), 'Χ');
str = str.replace(new RegExp('\&Psi\;', 'g'), 'Ψ');
str = str.replace(new RegExp('\&Omega\;', 'g'), 'Ω');
str = str.replace(new RegExp('\&alpha\;', 'g'), 'α');
str = str.replace(new RegExp('\&beta\;', 'g'), 'β');
str = str.replace(new RegExp('\&gamma\;', 'g'), 'γ');
str = str.replace(new RegExp('\&delta\;', 'g'), 'δ');
str = str.replace(new RegExp('\&epsilon\;', 'g'), 'ε');
str = str.replace(new RegExp('\&zeta\;', 'g'), 'ζ');
str = str.replace(new RegExp('\&eta\;', 'g'), 'η');
str = str.replace(new RegExp('\&theta\;', 'g'), 'θ');
str = str.replace(new RegExp('\&ioeta\;', 'g'), 'ι');
str = str.replace(new RegExp('\&kappa\;', 'g'), 'κ');
str = str.replace(new RegExp('\&lambda\;', 'g'), 'λ');
str = str.replace(new RegExp('\&mu\;', 'g'), 'μ');
str = str.replace(new RegExp('\&nu\;', 'g'), 'ν');
str = str.replace(new RegExp('\&xi\;', 'g'), 'ξ');
str = str.replace(new RegExp('\&omicron\;', 'g'), 'ο');
str = str.replace(new RegExp('\&pi\;', 'g'), 'π');
str = str.replace(new RegExp('\&rho\;', 'g'), 'ρ');
str = str.replace(new RegExp('\&sigmaf\;', 'g'), 'ς');
str = str.replace(new RegExp('\&sigma\;', 'g'), 'σ');
str = str.replace(new RegExp('\&tau\;', 'g'), 'τ');
str = str.replace(new RegExp('\&upsilon\;', 'g'), 'υ');
str = str.replace(new RegExp('\&phi\;', 'g'), 'φ');
str = str.replace(new RegExp('\&chi\;', 'g'), 'χ');
str = str.replace(new RegExp('\&psi\;', 'g'), 'ψ');
str = str.replace(new RegExp('\&omega\;', 'g'), 'ω');
str = str.replace(new RegExp('\&thetasym\;', 'g'), 'ϑ');
str = str.replace(new RegExp('\&upsih\;', 'g'), 'ϒ');
str = str.replace(new RegExp('\&piv\;', 'g'), 'ϖ');
//Latin symbols (capitalization matters on all)
str = str.replace(new RegExp('\À\;', 'g'), 'À');
str = str.replace(new RegExp('\Á\;', 'g'), 'Á');
str = str.replace(new RegExp('\Â\;', 'g'), 'Â');
str = str.replace(new RegExp('\Ã\;', 'g'), 'Ã');
str = str.replace(new RegExp('\Ä\;', 'g'), 'Ä');
str = str.replace(new RegExp('\Å\;', 'g'), 'Å');
str = str.replace(new RegExp('\Æ\;', 'g'), 'Æ');
str = str.replace(new RegExp('\Ç\;', 'g'), 'Ç');
str = str.replace(new RegExp('\È\;', 'g'), 'È');
str = str.replace(new RegExp('\É\;', 'g'), 'É');
str = str.replace(new RegExp('\Ê\;', 'g'), 'Ê');
str = str.replace(new RegExp('\Ë\;', 'g'), 'Ë');
str = str.replace(new RegExp('\Ì\;', 'g'), 'Ì');
str = str.replace(new RegExp('\Í\;', 'g'), 'Í');
str = str.replace(new RegExp('\Î\;', 'g'), 'Î');
str = str.replace(new RegExp('\Ï\;', 'g'), 'Ï');
str = str.replace(new RegExp('\&Eth\;', 'g'), 'Ð');
str = str.replace(new RegExp('\Ñ\;', 'g'), 'Ñ');
str = str.replace(new RegExp('\Ò\;', 'g'), 'Ò');
str = str.replace(new RegExp('\Ó\;', 'g'), 'Ó');
str = str.replace(new RegExp('\Ô\;', 'g'), 'Ô');
str = str.replace(new RegExp('\Õ\;', 'g'), 'Õ');
str = str.replace(new RegExp('\Ö\;', 'g'), 'Ö');
str = str.replace(new RegExp('\Ø\;', 'g'), 'Ø');
str = str.replace(new RegExp('\Ù\;', 'g'), 'Ù');
str = str.replace(new RegExp('\Ú\;', 'g'), 'Ú');
str = str.replace(new RegExp('\Û\;', 'g'), 'Û');
str = str.replace(new RegExp('\Ü\;', 'g'), 'Ü');
str = str.replace(new RegExp('\Ý\;', 'g'), 'Ý');
str = str.replace(new RegExp('\Þ\;', 'g'), 'Þ');
str = str.replace(new RegExp('\ß\;', 'g'), 'ß');
str = str.replace(new RegExp('\à\;', 'g'), 'à');
str = str.replace(new RegExp('\á\;', 'g'), 'á');
str = str.replace(new RegExp('\â\;', 'g'), 'â');
str = str.replace(new RegExp('\ã\;', 'g'), 'ã');
str = str.replace(new RegExp('\ä\;', 'g'), 'ä');
str = str.replace(new RegExp('\å\;', 'g'), 'å');
str = str.replace(new RegExp('\æ\;', 'g'), 'æ');
str = str.replace(new RegExp('\ç\;', 'g'), 'ç');
str = str.replace(new RegExp('\è\;', 'g'), 'è');
str = str.replace(new RegExp('\é\;', 'g'), 'é');
str = str.replace(new RegExp('\ê\;', 'g'), 'ê');
str = str.replace(new RegExp('\ë\;', 'g'), 'ë');
str = str.replace(new RegExp('\ì\;', 'g'), 'ì');
str = str.replace(new RegExp('\í\;', 'g'), 'í');
str = str.replace(new RegExp('\î\;', 'g'), 'î');
str = str.replace(new RegExp('\ï\;', 'g'), 'ï');
str = str.replace(new RegExp('\ð\;', 'g'), 'ð');
str = str.replace(new RegExp('\ñ\;', 'g'), 'ñ');
str = str.replace(new RegExp('\ò\;', 'g'), 'ò');
str = str.replace(new RegExp('\ó\;', 'g'), 'ó');
str = str.replace(new RegExp('\ô\;', 'g'), 'ô');
str = str.replace(new RegExp('\õ\;', 'g'), 'õ');
str = str.replace(new RegExp('\ö\;', 'g'), 'ö');
str = str.replace(new RegExp('\ø\;', 'g'), 'ø');
str = str.replace(new RegExp('\ù\;', 'g'), 'ù');
str = str.replace(new RegExp('\ú\;', 'g'), 'ú');
str = str.replace(new RegExp('\û\;', 'g'), 'û');
str = str.replace(new RegExp('\ü\;', 'g'), 'ü');
str = str.replace(new RegExp('\ý\;', 'g'), 'ý');
str = str.replace(new RegExp('\þ\;', 'g'), 'þ');
str = str.replace(new RegExp('\ÿ\;', 'g'), 'ÿ');
str = str.replace(new RegExp('\&OElig\;', 'g'), 'Œ');
str = str.replace(new RegExp('\&oelig\;', 'g'), 'œ');
str = str.replace(new RegExp('\&Scaron\;', 'g'), 'Š');
str = str.replace(new RegExp('\&scaron\;', 'g'), 'š');
str = str.replace(new RegExp('\&Yuml\;', 'g'), 'Ÿ');
str = str.replace(new RegExp('\&fnof\;', 'g'), 'ƒ');
//"Fake" Symbols
str = str.replace(new RegExp('<==|<--', 'gi'), '←');
str = str.replace(new RegExp('==>', 'gi'), '→');
//XML and HTML Symbols
str = str.replace(new RegExp('\&mdash\;', 'gi'), '—');
str = str.replace(new RegExp('\&ndash\;', 'gi'), '–');
str = str.replace(new RegExp('\&hellip\;', 'gi'), '...');
str = str.replace(new RegExp('\&dagger\;', 'g'), '†'); //Capitalization matters
str = str.replace(new RegExp('\&Dagger\;', 'g'), '‡'); //Capitalization matters
str = str.replace(new RegExp('\&plus\;', 'gi'), '+');
str = str.replace(new RegExp('\±\;', 'gi'), '±');
str = str.replace(new RegExp('\&minus\;', 'gi'), '−');
str = str.replace(new RegExp('\×\;', 'gi'), '×');
str = str.replace(new RegExp('\÷\;', 'gi'), '÷');
str = str.replace(new RegExp('\&ne\;', 'gi'), '≠');
str = str.replace(new RegExp('\&asymp\;', 'gi'), '≈');
// str = str.replace(new RegExp('\<\;', 'gi'), '<'); NOTE: Along with >, this has been commented out because it can break large amounts of code on some pages which discuss computer and web programming/scripting.
str = str.replace(new RegExp('\&le\;', 'gi'), '≤');
// str = str.replace(new RegExp('\>\;', 'gi'), '>'); NOTE: Along with <, this has been commented out because it can break large amounts of code on some pages which discuss computer and web programming/scripting.
str = str.replace(new RegExp('\&ge\;', 'gi'), '≥');
str = str.replace(new RegExp('\"\;', 'gi'), '"');
// str = str.replace(new RegExp('\&\;', 'gi'), '&'); WAY too many false positives in external links and display of raw code using "hacks" like &beta; to produce β without making it appear as the unicode character.
str = str.replace(new RegExp('\&apos\;', 'gi'), '\'');
str = str.replace(new RegExp('\¡\;', 'gi'), '¡');
str = str.replace(new RegExp('\¢\;', 'gi'), '¢');
str = str.replace(new RegExp('\£\;', 'gi'), '£');
str = str.replace(new RegExp('\¤\;', 'gi'), '¤');
str = str.replace(new RegExp('\¥\;', 'gi'), '¥');
str = str.replace(new RegExp('\¦\;', 'gi'), '¦');
str = str.replace(new RegExp('\§\;', 'gi'), '§');
str = str.replace(new RegExp('\¨\;', 'gi'), '¨');
str = str.replace(new RegExp('\©\;', 'gi'), '©');
str = str.replace(new RegExp('\ª\;', 'gi'), 'ª');
str = str.replace(new RegExp('\«\;', 'gi'), '«');
str = str.replace(new RegExp('\¬\;', 'gi'), '¬');
str = str.replace(new RegExp('\®\;', 'gi'), '®');
str = str.replace(new RegExp('\¯\;', 'gi'), '¯');
str = str.replace(new RegExp('\°\;', 'gi'), '°');
str = str.replace(new RegExp('\²\;', 'gi'), '²');
str = str.replace(new RegExp('\³\;', 'gi'), '³');
str = str.replace(new RegExp('\´\;', 'gi'), '´');
str = str.replace(new RegExp('\µ\;', 'gi'), 'µ');
str = str.replace(new RegExp('\¶\;', 'gi'), '¶');
str = str.replace(new RegExp('\·\;', 'gi'), '·');
str = str.replace(new RegExp('\¸\;', 'gi'), '¸');
str = str.replace(new RegExp('\¹\;', 'gi'), '¹');
str = str.replace(new RegExp('\º\;', 'gi'), 'º');
str = str.replace(new RegExp('\»\;', 'gi'), '»');
str = str.replace(new RegExp('\¼\;', 'gi'), '¼');
str = str.replace(new RegExp('\½\;', 'gi'), '½');
str = str.replace(new RegExp('\¾\;', 'gi'), '¾');
str = str.replace(new RegExp('\¿\;', 'gi'), '¿');
str = str.replace(new RegExp('\&circ\;', 'gi'), 'ˆ');
str = str.replace(new RegExp('\&tilde\;', 'gi'), '˜');
str = str.replace(new RegExp('\&lsquo\;', 'gi'), '‘');
str = str.replace(new RegExp('\&rsquo\;', 'gi'), '’');
str = str.replace(new RegExp('\&sbquo\;', 'gi'), '‚');
str = str.replace(new RegExp('\&ldquo\;', 'gi'), '“');
str = str.replace(new RegExp('\&rdquo\;', 'gi'), '”');
str = str.replace(new RegExp('\&bdquo\;', 'gi'), '„');
str = str.replace(new RegExp('\&bull\;', 'gi'), '•');
str = str.replace(new RegExp('\&permil\;', 'gi'), '‰');
str = str.replace(new RegExp('\&prime\;', 'g'), '′'); //Capitalization matters
str = str.replace(new RegExp('\&Prime\;', 'g'), '″'); //Capitalization matters
str = str.replace(new RegExp('\&lsaquo\;', 'gi'), '‹');
str = str.replace(new RegExp('\&rsaquo\;', 'gi'), '›');
str = str.replace(new RegExp('\&oline\;', 'gi'), '‾');
str = str.replace(new RegExp('\&frasl\;', 'gi'), '⁄');
str = str.replace(new RegExp('\&euro\;', 'gi'), '€');
str = str.replace(new RegExp('\&image\;', 'gi'), 'ℑ');
str = str.replace(new RegExp('\&weierp\;', 'gi'), '℘');
str = str.replace(new RegExp('\&real\;', 'gi'), 'ℜ');
str = str.replace(new RegExp('\&trade\;', 'gi'), '™');
str = str.replace(new RegExp('\&alefsym\;', 'gi'), 'ℵ');
str = str.replace(new RegExp('\&larr\;', 'g'), '←'); //Capitalization matters
str = str.replace(new RegExp('\&rarr\;', 'g'), '→'); //Capitalization matters
str = str.replace(new RegExp('\&uarr\;', 'g'), '↑'); //Capitalization matters
str = str.replace(new RegExp('\&darr\;', 'g'), '↓'); //Capitalization matters
str = str.replace(new RegExp('\&lArr\;', 'g'), '⇐'); //Capitalization matters
str = str.replace(new RegExp('\&rArr\;', 'g'), '⇒'); //Capitalization matters
str = str.replace(new RegExp('\&uArr\;', 'g'), '⇑'); //Capitalization matters
str = str.replace(new RegExp('\&dArr\;', 'g'), '⇓'); //Capitalization matters
str = str.replace(new RegExp('\&harr\;', 'g'), '↔'); //Capitalization matters
str = str.replace(new RegExp('\&hArr\;', 'g'), '⇔'); //Capitalization matters
str = str.replace(new RegExp('\&crarr\;', 'gi'), '↵');
str = str.replace(new RegExp('\&forall\;', 'gi'), '∀');
str = str.replace(new RegExp('\&part\;', 'gi'), '∂');
str = str.replace(new RegExp('\&exist\;', 'gi'), '∃');
str = str.replace(new RegExp('\&empty\;', 'gi'), '∅');
str = str.replace(new RegExp('\&nabla\;', 'gi'), '∇');
str = str.replace(new RegExp('\&isin\;', 'gi'), '∈');
str = str.replace(new RegExp('\¬in\;', 'gi'), '∉');
str = str.replace(new RegExp('\&ni\;', 'gi'), '∋');
str = str.replace(new RegExp('\&prod\;', 'gi'), '∏');
str = str.replace(new RegExp('\&sum\;', 'gi'), '∑');
str = str.replace(new RegExp('\&lowast\;', 'gi'), '∗');
str = str.replace(new RegExp('\&radic\;', 'gi'), '√');
str = str.replace(new RegExp('\&prop\;', 'gi'), '∝');
str = str.replace(new RegExp('\&infin\;', 'gi'), '∞');
str = str.replace(new RegExp('\&ang\;', 'gi'), '∠');
str = str.replace(new RegExp('\&and\;', 'gi'), '∧');
str = str.replace(new RegExp('\&or\;', 'gi'), '∨');
str = str.replace(new RegExp('\&cap\;', 'gi'), '∩');
str = str.replace(new RegExp('\&cup\;', 'gi'), '∪');
str = str.replace(new RegExp('\&int\;', 'gi'), '∫');
str = str.replace(new RegExp('\&there4\;', 'gi'), '∴');
str = str.replace(new RegExp('\&sim\;', 'gi'), '∼');
str = str.replace(new RegExp('\&cong\;', 'gi'), '≅');
str = str.replace(new RegExp('\&sub\;', 'gi'), '⊂');
str = str.replace(new RegExp('\&sup\;', 'gi'), '⊃');
str = str.replace(new RegExp('\&nsub\;', 'gi'), '⊄');
str = str.replace(new RegExp('\&sube\;', 'gi'), '⊆');
str = str.replace(new RegExp('\&supe\;', 'gi'), '⊇');
str = str.replace(new RegExp('\&oplus\;', 'gi'), '⊕');
str = str.replace(new RegExp('\&otimes\;', 'gi'), '⊗');
str = str.replace(new RegExp('\&perp\;', 'gi'), '⊥');
str = str.replace(new RegExp('\&sdot\;', 'gi'), '⋅');
str = str.replace(new RegExp('\&lceil\;', 'gi'), '⌈');
str = str.replace(new RegExp('\&rceil\;', 'gi'), '⌉');
str = str.replace(new RegExp('\&lfloor\;', 'gi'), '⌊');
str = str.replace(new RegExp('\&rfloor\;', 'gi'), '⌋');
str = str.replace(new RegExp('\&lang\;', 'gi'), '〈');
str = str.replace(new RegExp('\&rang\;', 'gi'), '〉');
str = str.replace(new RegExp('\&loz\;', 'gi'), '◊');
str = str.replace(new RegExp('\&spades\;', 'gi'), '♠');
str = str.replace(new RegExp('\&clubs\;', 'gi'), '♣');
str = str.replace(new RegExp('\&hearts\;', 'gi'), '♥');
str = str.replace(new RegExp('\&diams\;', 'gi'), '♦');
return str;
}
//