object htmlencode2(object str) 

 object result; 
 object l; 
 if (isNULL(str)) { 
   htmlencode2 = ""; 
return null; 
 } 
 l = len(str); 
 result = ""; 
 object i; 
 for (int i = 1; i <= l; i++) { 
   if (mid(str, i, 1) == chr(13)) { 
     result = result + "<br>"; 
   } else if (mid(str, i, 1) == chr(34)) { 
     result = result + "&quot;"; 
   } else if (mid(str, i, 1) == "&") { 
     result = result + "&amp;"; 
   } else if (mid(str, i, 1) == chr(32)) { 
     if (i + 1 <= l & i - 1 > 0) { 
       if (mid(str, i + 1, 1) == chr(32) | mid(str, i + 1, 1) == chr(9) | mid(str, i - 1, 1) == chr(32) | mid(str, i - 1, 1) == chr(9)) { 
         result = result + "&nbsp;"; 
       } else { 
         result = result + " "; 
       } 
     } else { 
       result = result + "&nbsp;"; 
     } 
   } else if (mid(str, i, 1) == chr(9)) { 
     result = result + " "; 
   } else { 
     result = result + mid(str, i, 1); 
   } 
 } 
 htmlencode2 = result; 
}

解决方案 »

  1.   

    Server.HtmlEncode();
    Server.HtmlDecode();这两个函数能实现你的要求。
      

  2.   

    随手写的,没测试,你试试看吧string htmlencode2(string str)
    {
    string result;
    int l;
    if (str == null)

    return "";
    }
    l=str.Length;
    result="";
    int i;
    for (i=0;i<=l;i++)
    {
    switch (str.Substring(i,1))
    {
    case "\r":
    result=result+"<br>";
    break;
    case "\"":
    result=result+"&quot;";
    break;
    case "&":
    result=result+"&amp;";
    break;
    case " ":
    if (i+1<=l && i-1>0)
    {
    if (str.Substring(i+1,1)==" " || str.Substring(i+1,1)=="\t" || str.Substring(i-1,1)==" " || str.Substring(i-1,1)=="\t")
    result=result+"&nbsp;";
    else
    result=result+" ";
    }
    else
    result=result+"&nbsp;";                
    break;
    case "\t":
    result=result+"    ";
    break;
    default:
    result=str.Substring(i,1);
    break;
    }
    }
    return result;
    }