public class Test{

public static String Replace(
String source,
String oldString,
String newString) {
if (source == null) {
return null;
}
StringBuffer output = new StringBuffer();
int lengOfsource = source.length();
int lengOfold = oldString.length();
int posStart;
int pos;
for (posStart = 0;
(pos = source.indexOf(oldString, posStart)) >= 0;
posStart = pos + lengOfold) {
output.append(source.substring(posStart, pos));
output.append(newString);
} if (posStart < lengOfsource) {
output.append(source.substring(posStart));
}
return output.toString();
}

public static String HtmlWrite(String s) {
s = Replace(s, "&amp", "&;");
s = Replace(s, "&lt;", "<");
s = Replace(s, "&gt;", ">");
s = Replace(s, "    ", "\t");
s = Replace(s, "\n", "\r\n");
s = Replace(s, "<br>", "\n");
s = Replace(s, " &nbsp;", "  ");
return s;
}         //测试,将s 换成,你数据库中读出的CLOB即可
         public static void main(String args[]) {
                   String s = HtmlWrite("asdfasdf\t\nsdfasdf\nadfaf");
                   System.out.println(s);  
         }}

解决方案 »

  1.   

    同意楼上的观点,你在读取数据往数据库插入时,先进行一下转换,即可调用楼上的 public static String HtmlWrite(String s) {
    方法
      

  2.   

    其实不是没有了,是因为没有进行转换,test框是支持回车的,但是普通的html网页是不支持的,所以你必须进行
    s = Replace(s, "&amp", "&;");
    s = Replace(s, "&lt;", "<");
    s = Replace(s, "&gt;", ">");
    s = Replace(s, "    ", "\t");
    s = Replace(s, "\n", "\r\n");
    s = Replace(s, "<br>", "\n");
    s = Replace(s, " &nbsp;", "  ");
    这样的转化
      

  3.   

    不用这么麻烦吧,用我的方法转一下就OK:
    第一种:public static String toHTMLString(String in) {
            StringBuffer out = new StringBuffer();
            for (int i = 0; in != null && i < in.length(); i++) {
                char c = in.charAt(i);
                if (c == '\'')
                    out.append("&#039;");
                else if (c == '\"')
                    out.append("&#034;");
                else if (c == '<')
                    out.append("&lt;");
                else if (c == '>')
                    out.append("&gt;");
                else if (c == '&')
                    out.append("&amp;");
                else if (c == ' ')
                    out.append("&nbsp;");
                else if (c == '\n')
                    out.append("<br/>");
                else
                    out.append(c);
            }
            return out.toString();
        }第二种:
    public String encode(String s)
    {
    if(s==null)return null;
    StringBuffer sb = new StringBuffer();
    int n = s.length();
    for (int i = 0; i < n; i++) {
    char c = s.charAt(i);
    switch (c) {
    case ' ': sb.append("&nbsp;");break;
    case '\r':sb.append("<br/>");break;
    case '\'':sb.append("&#039;");break;
    case '<': sb.append("&lt;"); break;
    case '>': sb.append("&gt;"); break;
    case '&': sb.append("&amp;"); break;
    case '"': sb.append("&quot;"); break;
    default:  sb.append(c);
    }
    }
    return sb.toString();
    }