0

データベースから文字列をフェッチし、サーブレットを使用してバックエンドから送信します。サーブレットはJSONを構築し、それをクライアントに送信します

この関数を使用してJSONをエスケープします

public static String toHTML(String string){
        StringBuffer sb =  new StringBuffer();
                    for(int i=0;i<string.length();i++){
                            char ch=string.charAt(i);
                            switch(ch){
                            case '"':
                                    sb.append("\\\"");
                                    break;
                            case '\\':
                                    sb.append("\\\\");
                                    break;
                            case '\b':
                                    sb.append("\\b");
                                    break;
                            case '\f':
                                    sb.append("\\f");
                                    break;
                            case '\n':
                                    sb.append("\\n");
                                    break;
                            case '\r':
                                    sb.append("\\r");
                                    break;
                            case '\t':
                                    sb.append("\\t");
                                    break;
                            case '/':
                                    sb.append("\\/");
                                    break;
                            default:
                    //Reference: http://www.unicode.org/versions/Unicode5.1.0/
                                    if((ch>='\u0000' && ch<='\u001F') || (ch>='\u007F' && ch<='\u009F') || (ch>='\u2000' && ch<='\u20FF')){
                                            String ss=Integer.toHexString(ch);
                                            sb.append("\\u");
                                            for(int k=0;k<4-ss.length();k++){
                                                    sb.append('0');
                                            }
                                            sb.append(ss.toUpperCase());
                                    }
                                    else{
                                            sb.append(ch);
                                    }
                            }
                    }//for
                    return sb.toString();

    }

しかし、表示されると、エスケープ文字が表示されます。例「何か\r\n」。助言がありますか ?

4

2 に答える 2

0

\r\n明らかに、ブラウザが解釈できるものは何もありません。\r\nに置き換えると、 HTML<br>に改行が表示されます。それに応じて他のタグを置き換えます。

于 2012-12-08T23:33:36.160 に答える
0

改行文字を置き換える JavaScript 関数

var nl2br = function(str, is_xhtml) {
    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}

console.log(nl2br('asdf', false));     // asdf

console.log(nl2br('as\r\ndf', false)); // as<br>
                                       //
                                       // df

console.log(nl2br('as\n\rdf', true));​  // as<br />
                                       //
                                       // df
于 2012-12-08T23:36:51.630 に答える