4

I want to convert an e-mail address into HTML Escape Characters as a basic way to try and avoid being harvested by spam-bots. Like mentioned in this question:

When placing email addresses on a webpage do you place them as text like this:

joe.somebody@company.com

or use a clever trick to try and fool the email address harvester bots? For example:

HTML Escape Characters:

joe.somebody@company.com

I cannot find a .Net method to do so though. The Html.Encode only does the invalid HTML characters such as £$%^& and not letters.

Does a method exist or do I need to write my own?

Many Thanks

Community
  • 1
  • 1
Damien
  • 13,927
  • 14
  • 55
  • 88
  • 1
    Although your effort is worthy, and this may protect your address from some bots, it won't fool many and the addresses will be on the lists in no time at all. – overslacked Jan 20 '10 at 17:18
  • well hopefully it will help a bit. It's attempting to make the best out of it as the other methods (make it an image, hide the address and so on) I am not keen on. – Damien Jan 20 '10 at 17:19
  • Damien - the problem is that the lists are bought and sold. As soon as you end up on one it's basically over. – overslacked Jan 20 '10 at 17:58
  • Yes. There is not much that can be done other than removing it completely which I don't want to do. At least this way I am afforded some protection however weak. Plus I learned something cool but HTML character escaping! :D – Damien Jan 20 '10 at 18:13
  • "such as £$%^& and not letters." - stop swearing at the computer :) – Aran Mulholland Oct 05 '12 at 06:43

4 Answers4

4

I think you can use

HttpUtility.HtmlEncode

also see here: http://msdn.microsoft.com/en-us/library/73z22y6h.aspx

Philipp Grathwohl
  • 2,726
  • 3
  • 27
  • 38
3

I'm not aware of anything included in the framework, but you could try something like this?

public string ConvertToHtmlEntities(string plainText)
{
    StringBuilder sb = new StringBuilder(plainText.Length * 6);
    foreach (char c in plainText)
    {
        sb.Append("&#").Append((ushort)c).Append(';');
    }
    return sb.ToString();
}
LukeH
  • 263,068
  • 57
  • 365
  • 409
2
   public   static asciitable getascii()
    {
        asciitable ascii = new asciitable ();
        ascii.AddasciiRow("0", "NUL", "�", "");
        ascii.AddasciiRow("1", "SOH", "", "");
        ascii.AddasciiRow("2", "STX", "", "");
        ascii.AddasciiRow("3", "ETX", "", "");
        ascii.AddasciiRow("4", "EOT", "", "");
        ascii.AddasciiRow("5", "ENQ", "", "");
        ascii.AddasciiRow("6", "ACK", "", "");
        ascii.AddasciiRow("7", "BEL", "", "");
        ascii.AddasciiRow("8", "BS", "", "");
        ascii.AddasciiRow("9", "HT", "	", "");
        ascii.AddasciiRow("10", "LF", "
", "");
        ascii.AddasciiRow("11", "VT", "", "");
        ascii.AddasciiRow("12", "FF", "", "");
        ascii.AddasciiRow("13", "CR", "
", "");
        ascii.AddasciiRow("14", "SO", "", "");
        ascii.AddasciiRow("15", "SI", "", "");
        ascii.AddasciiRow("16", "DLE", "", "");
        ascii.AddasciiRow("17", "DC1", "", "");
        ascii.AddasciiRow("18", "DC2", "", "");
        ascii.AddasciiRow("19", "DC3", "", "");
        ascii.AddasciiRow("20", "DC4", "", "");
        ascii.AddasciiRow("21", "NAK", "", "");
        ascii.AddasciiRow("22", "SYN", "", "");
        ascii.AddasciiRow("23", "ETB", "", "");
        ascii.AddasciiRow("24", "CAN", "", "");
        ascii.AddasciiRow("25", "EM", "", "");
        ascii.AddasciiRow("26", "SUB", "", "");
        ascii.AddasciiRow("27", "ESC", "", "");
        ascii.AddasciiRow("28", "FS", "", "");
        ascii.AddasciiRow("29", "GS", "", "");
        ascii.AddasciiRow("30", "RS", "", "");
        ascii.AddasciiRow("31", "US", "", "");
        ascii.AddasciiRow("32", " ", " ", " ");
        ascii.AddasciiRow("33", "!", "!", "!");
        ascii.AddasciiRow("34", Convert.ToChar(34).ToString(), """, """);
        ascii.AddasciiRow("35", "#", "#", "#");
        ascii.AddasciiRow("36", "$", "$", "$");
        ascii.AddasciiRow("37", "%", "%", "%");
        ascii.AddasciiRow("38", "&", "&", "&");
        ascii.AddasciiRow("39", "'", "'", "'");
        ascii.AddasciiRow("40", "(", "(", "(");
        ascii.AddasciiRow("41", ")", ")", ")");
        ascii.AddasciiRow("42", "*", "*", "*");
        ascii.AddasciiRow("43", "+", "+", "+");
        ascii.AddasciiRow("44", ",", ",", ",");
        ascii.AddasciiRow("45", "-", "-", "-");
        ascii.AddasciiRow("46", ".", ".", ".");
        ascii.AddasciiRow("47", "/", "/", "/");
        ascii.AddasciiRow("48", "0", "0", "0");
        ascii.AddasciiRow("49", "1", "1", "1");
        ascii.AddasciiRow("50", "2", "2", "2");
        ascii.AddasciiRow("51", "3", "3", "3");
        ascii.AddasciiRow("52", "4", "4", "4");
        ascii.AddasciiRow("53", "5", "5", "5");
        ascii.AddasciiRow("54", "6", "6", "6");
        ascii.AddasciiRow("55", "7", "7", "7");
        ascii.AddasciiRow("56", "8", "8", "8");
        ascii.AddasciiRow("57", "9", "9", "9");
        ascii.AddasciiRow("58", ":", ":", ":");
        ascii.AddasciiRow("59", ";", "&#59;", ";");
        //ascii.AddasciiRow("60", "<", "&#60;", "&lt;");
        ascii.AddasciiRow("60", "<", "&#60;", "<");
        ascii.AddasciiRow("61", "=", "&#61;", "=");
        //ascii.AddasciiRow("62", ">", "&#62;", "&gt;");
        ascii.AddasciiRow("62", ">", "&#62;", ">");
        ascii.AddasciiRow("63", "?", "&#63;", "?");
        ascii.AddasciiRow("64", "@", "&#64;", "@");
        ascii.AddasciiRow("65", "A", "&#65;", "A");
        ascii.AddasciiRow("66", "B", "&#66;", "B");
        ascii.AddasciiRow("67", "C", "&#67;", "C");
        ascii.AddasciiRow("68", "D", "&#68;", "D");
        ascii.AddasciiRow("69", "E", "&#69;", "E");
        ascii.AddasciiRow("70", "F", "&#70;", "F");
        ascii.AddasciiRow("71", "G", "&#71;", "G");
        ascii.AddasciiRow("72", "H", "&#72;", "H");
        ascii.AddasciiRow("73", "I", "&#73;", "I");
        ascii.AddasciiRow("74", "J", "&#74;", "J");
        ascii.AddasciiRow("75", "K", "&#75;", "K");
        ascii.AddasciiRow("76", "L", "&#76;", "L");
        ascii.AddasciiRow("77", "M", "&#77;", "M");
        ascii.AddasciiRow("78", "N", "&#78;", "N");
        ascii.AddasciiRow("79", "O", "&#79;", "O");
        ascii.AddasciiRow("80", "P", "&#80;", "P");
        ascii.AddasciiRow("81", "Q", "&#81;", "Q");
        ascii.AddasciiRow("82", "R", "&#82;", "R");
        ascii.AddasciiRow("83", "S", "&#83;", "S");
        ascii.AddasciiRow("84", "T", "&#84;", "T");
        ascii.AddasciiRow("85", "U", "&#85;", "U");
        ascii.AddasciiRow("86", "V", "&#86;", "V");
        ascii.AddasciiRow("87", "W", "&#87;", "W");
        ascii.AddasciiRow("88", "X", "&#88;", "X");
        ascii.AddasciiRow("89", "Y", "&#89;", "Y");
        ascii.AddasciiRow("90", "Z", "&#90;", "Z");
        ascii.AddasciiRow("91", "[", "&#91;", "[");
        ascii.AddasciiRow("92", @"\", "&#92;", @"\");
        ascii.AddasciiRow("93", "]", "&#93;", "]");
        ascii.AddasciiRow("94", "^", "&#94;", "^");
        ascii.AddasciiRow("95", "_", "&#95;", "_");
        ascii.AddasciiRow("96", "`", "&#96;", "`");
        ascii.AddasciiRow("97", "a", "&#97;", "a");
        ascii.AddasciiRow("98", "b", "&#98;", "b");
        ascii.AddasciiRow("99", "c", "&#99;", "c");
        ascii.AddasciiRow("100", "d", "&#100;", "d");
        ascii.AddasciiRow("101", "e", "&#101;", "e");
        ascii.AddasciiRow("102", "f", "&#102;", "f");
        ascii.AddasciiRow("103", "g", "&#103;", "g");
        ascii.AddasciiRow("104", "h", "&#104;", "h");
        ascii.AddasciiRow("105", "i", "&#105;", "i");
        ascii.AddasciiRow("106", "j", "&#106;", "j");
        ascii.AddasciiRow("107", "k", "&#107;", "k");
        ascii.AddasciiRow("108", "l", "&#108;", "l");
        ascii.AddasciiRow("109", "m", "&#109;", "m");
        ascii.AddasciiRow("110", "n", "&#110;", "n");
        ascii.AddasciiRow("111", "o", "&#111;", "o");
        ascii.AddasciiRow("112", "p", "&#112;", "p");
        ascii.AddasciiRow("113", "q", "&#113;", "q");
        ascii.AddasciiRow("114", "r", "&#114;", "r");
        ascii.AddasciiRow("115", "s", "&#115;", "s");
        ascii.AddasciiRow("116", "t", "&#116;", "t");
        ascii.AddasciiRow("117", "u", "&#117;", "u");
        ascii.AddasciiRow("118", "v", "&#118;", "v");
        ascii.AddasciiRow("119", "w", "&#119;", "w");
        ascii.AddasciiRow("120", "x", "&#120;", "x");
        ascii.AddasciiRow("121", "y", "&#121;", "y");
        ascii.AddasciiRow("122", "z", "&#122;", "z");
        ascii.AddasciiRow("123", "{", "&#123;", "{");
        ascii.AddasciiRow("124", "|", "&#124;", "|");
        ascii.AddasciiRow("125", "}", "&#125;", "}");
        ascii.AddasciiRow("126", "~", "&#126;", "~");
        ascii.AddasciiRow("127", "", "&#127;", "");
        ascii.AddasciiRow("128", "€", "&#128;", "&euro;");
        ascii.AddasciiRow("129", "", "", "");
        ascii.AddasciiRow("130", "‚", "&#130;", "&sbquo;");
        ascii.AddasciiRow("131", "ƒ", "&#131;", "&fnof;");
        ascii.AddasciiRow("132", "„", "&#132;", "&bdquo;");
        ascii.AddasciiRow("133", "…", "&#133;", "&hellip;");
        ascii.AddasciiRow("134", "†", "&#134;", "&dagger;");
        ascii.AddasciiRow("135", "‡", "&#135;", "&Dagger;");
        ascii.AddasciiRow("136", "ˆ", "&#136;", "&circ;");
        ascii.AddasciiRow("137", "‰", "&#137;", "&permil;");
        ascii.AddasciiRow("138", "Š", "&#138;", "&Scaron;");
        ascii.AddasciiRow("139", "‹", "&#139;", "&lsaquo;");
        ascii.AddasciiRow("140", "Œ", "&#140;", "&OElig;");
        ascii.AddasciiRow("141", "", "", "");
        ascii.AddasciiRow("142", "Ž", "&#142;", "");
        ascii.AddasciiRow("143", "", "", "");
        ascii.AddasciiRow("144", "", "", "");
        ascii.AddasciiRow("145", "‘", "&#145;", "&lsquo;");
        ascii.AddasciiRow("146", "’", "&#146;", "&rsquo;");
        ascii.AddasciiRow("147", "“", "&#147;", "&ldquo;");
        ascii.AddasciiRow("148", "”", "&#148;", "&rdquo;");
        ascii.AddasciiRow("149", "•", "&#149;", "&bull;");
        ascii.AddasciiRow("150", "–", "&#150;", "&ndash;");
        ascii.AddasciiRow("151", "—", "&#151;", "&mdash;");
        ascii.AddasciiRow("152", "˜", "&#152;", "&tilde;");
        ascii.AddasciiRow("153", "™", "&#153;", "&trade;");
        ascii.AddasciiRow("154", "š", "&#154;", "&scaron;");
        ascii.AddasciiRow("155", "›", "&#155;", "&rsaquo;");
        ascii.AddasciiRow("156", "œ", "&#156;", "&oelig;");
        ascii.AddasciiRow("157", "", "", "");
        ascii.AddasciiRow("158", "ž", "&#158;", "");
        ascii.AddasciiRow("159", "Ÿ", "&#159;", "&yuml;");
        ascii.AddasciiRow("160", "", "&#160;", "&nbsp;");
        ascii.AddasciiRow("161", "¡", "&#161;", "&iexcl;");
        ascii.AddasciiRow("162", "¢", "&#162;", "&cent;");
        ascii.AddasciiRow("163", "£", "&#163;", "&pound;");
        ascii.AddasciiRow("164", "¤", "&#164;", "&curren;");
        ascii.AddasciiRow("165", "¥", "&#165;", "&yen;");
        ascii.AddasciiRow("166", "¦", "&#166;", "&brvbar;");
        ascii.AddasciiRow("167", "§", "&#167;", "&sect;");
        ascii.AddasciiRow("168", "¨", "&#168;", "&uml;");
        ascii.AddasciiRow("169", "©", "&#169;", "&copy;");
        ascii.AddasciiRow("170", "ª", "&#170;", "&ordf;");
        ascii.AddasciiRow("171", "«", "&#171;", "&laquo;");
        ascii.AddasciiRow("172", "¬", "&#172;", "&not;");
        ascii.AddasciiRow("173", "", "&#173;", "&shy;");
        ascii.AddasciiRow("174", "®", "&#174;", "&reg;");
        ascii.AddasciiRow("175", "¯", "&#175;", "&macr;");
        ascii.AddasciiRow("176", "°", "&#176;", "&deg;");
        ascii.AddasciiRow("177", "±", "&#177;", "&plusmn;");
        ascii.AddasciiRow("178", "²", "&#178;", "&sup2;");
        ascii.AddasciiRow("179", "³", "&#179;", "&sup3;");
        ascii.AddasciiRow("180", "´", "&#180;", "&acute;");
        ascii.AddasciiRow("181", "µ", "&#181;", "&micro;");
        ascii.AddasciiRow("182", "¶", "&#182;", "&para;");
        ascii.AddasciiRow("183", "·", "&#183;", "&middot;");
        ascii.AddasciiRow("184", "¸", "&#184;", "&cedil;");
        ascii.AddasciiRow("185", "¹", "&#185;", "&sup1;");
        ascii.AddasciiRow("186", "º", "&#186;", "&ordm;");
        ascii.AddasciiRow("187", "»", "&#187;", "&raquo;");
        ascii.AddasciiRow("188", "¼", "&#188;", "&frac14;");
        ascii.AddasciiRow("189", "½", "&#189;", "&frac12;");
        ascii.AddasciiRow("190", "¾", "&#190;", "&frac34;");
        ascii.AddasciiRow("191", "¿", "&#191;", "&iquest;");
        ascii.AddasciiRow("192", "À", "&#192;", "&Agrave;");
        ascii.AddasciiRow("193", "Á", "&#193;", "&Aacute;");
        ascii.AddasciiRow("194", "Â", "&#194;", "&Acirc;");
        ascii.AddasciiRow("195", "Ã", "&#195;", "&Atilde;");
        ascii.AddasciiRow("196", "Ä", "&#196;", "&Auml;");
        ascii.AddasciiRow("197", "Å", "&#197;", "&Aring;");
        ascii.AddasciiRow("198", "Æ", "&#198;", "&AElig;");
        ascii.AddasciiRow("199", "Ç", "&#199;", "&Ccedil;");
        ascii.AddasciiRow("200", "È", "&#200;", "&Egrave;");
        ascii.AddasciiRow("201", "É", "&#201;", "&Eacute;");
        ascii.AddasciiRow("202", "Ê", "&#202;", "&Ecirc;");
        ascii.AddasciiRow("203", "Ë", "&#203;", "&Euml;");
        ascii.AddasciiRow("204", "Ì", "&#204;", "&Igrave;");
        ascii.AddasciiRow("205", "Í", "&#205;", "&Iacute;");
        ascii.AddasciiRow("206", "Î", "&#206;", "&Icirc;");
        ascii.AddasciiRow("207", "Ï", "&#207;", "&Iuml;");
        ascii.AddasciiRow("208", "Ð", "&#208;", "&ETH;");
        ascii.AddasciiRow("209", "Ñ", "&#209;", "&Ntilde;");
        ascii.AddasciiRow("210", "Ò", "&#210;", "&Ograve;");
        ascii.AddasciiRow("211", "Ó", "&#211;", "&Oacute;");
        ascii.AddasciiRow("212", "Ô", "&#212;", "&Ocirc;");
        ascii.AddasciiRow("213", "Õ", "&#213;", "&Otilde;");
        ascii.AddasciiRow("214", "Ö", "&#214;", "&Ouml;");
        ascii.AddasciiRow("215", "×", "&#215;", "&times;");
        ascii.AddasciiRow("216", "Ø", "&#216;", "&Oslash;");
        ascii.AddasciiRow("217", "Ù", "&#217;", "&Ugrave;");
        ascii.AddasciiRow("218", "Ú", "&#218;", "&Uacute;");
        ascii.AddasciiRow("219", "Û", "&#219;", "&Ucirc;");
        ascii.AddasciiRow("220", "Ü", "&#220;", "&Uuml;");
        ascii.AddasciiRow("221", "Ý", "&#221;", "&Yacute;");
        ascii.AddasciiRow("222", "Þ", "&#222;", "&THORN;");
        ascii.AddasciiRow("223", "ß", "&#223;", "&szlig;");
        ascii.AddasciiRow("224", "à", "&#224;", "&agrave;");
        ascii.AddasciiRow("225", "á", "&#225;", "&aacute;");
        ascii.AddasciiRow("226", "â", "&#226;", "&acirc;");
        ascii.AddasciiRow("227", "ã", "&#227;", "&atilde;");
        ascii.AddasciiRow("228", "ä", "&#228;", "&auml;");
        ascii.AddasciiRow("229", "å", "&#229;", "&aring;");
        ascii.AddasciiRow("230", "æ", "&#230;", "&aelig;");
        ascii.AddasciiRow("231", "ç", "&#231;", "&ccedil;");
        ascii.AddasciiRow("232", "è", "&#232;", "&egrave;");
        ascii.AddasciiRow("233", "é", "&#233;", "&eacute;");
        ascii.AddasciiRow("234", "ê", "&#234;", "&ecirc;");
        ascii.AddasciiRow("235", "ë", "&#235;", "&euml;");
        ascii.AddasciiRow("236", "ì", "&#236;", "&igrave;");
        ascii.AddasciiRow("237", "í", "&#237;", "&iacute;");
        ascii.AddasciiRow("238", "î", "&#238;", "&icirc;");
        ascii.AddasciiRow("239", "ï", "&#239;", "&iuml;");
        ascii.AddasciiRow("240", "ð", "&#240;", "&eth;");
        ascii.AddasciiRow("241", "ñ", "&#241;", "&ntilde;");
        ascii.AddasciiRow("242", "ò", "&#242;", "&ograve;");
        ascii.AddasciiRow("243", "ó", "&#243;", "&oacute;");
        ascii.AddasciiRow("244", "ô", "&#244;", "&ocirc;");
        ascii.AddasciiRow("245", "õ", "&#245;", "&otilde;");
        ascii.AddasciiRow("246", "ö", "&#246;", "&ouml;");
        ascii.AddasciiRow("247", "÷", "&#247;", "&divide;");
        ascii.AddasciiRow("248", "ø", "&#248;", "&oslash;");
        ascii.AddasciiRow("249", "ù", "&#249;", "&ugrave;");
        ascii.AddasciiRow("250", "ú", "&#250;", "&uacute;");
        ascii.AddasciiRow("251", "û", "&#251;", "&ucirc;");
        ascii.AddasciiRow("252", "ü", "&#252;", "&uuml;");
        ascii.AddasciiRow("253", "ý", "&#253;", "&yacute;");
        ascii.AddasciiRow("254", "þ", "&#254;", "&thorn;");
        ascii.AddasciiRow("255", "ÿ", "&#255;", "&yuml;");

        return ascii;
    }
Pieter
  • 43
  • 4
1

No, but it's easy enough to write one...

Public Shared Function HtmlEncodeAll(ByVal Value As String) As String
    Dim Builder As New StringBuilder()

    For Each Chr As Char In Value
        Builder.Append("&#")
        Builder.Append(Convert.ToInt32(Chr))
        Builder.Append(";")
    Next

    Return Builder.ToString()
End Function
Josh Stodola
  • 81,538
  • 47
  • 180
  • 227