1

文字列がデータベースに保存される方法に非常に奇妙な問題があり、その結果、Javascript でこれらの「未終了文字列リテラル」エラーが発生しています。

私がやっていることの概要は次のとおりです。

プラットフォーム: C#/ASP.NET MVC 1.0、SQL Server 2005、SparkViewEngine、YUI 2

私の見解では、NewtonSoft の Json.NET を使用して、オブジェクトを JSON データ構造にシリアル化します。

<script type="text/javascript">
    // <![CDATA[ 
    var data = YAHOO.lang.JSON.parse("${Newtonsoft.Json.JsonConvert.Serialize(Model)}");
    ....
</script>

通常、これは機能しますが、データベースから取得したフィールドの 1 つに次のデータが含まれていることに気付きました。これにより、文字列が適切に形成されません。

データベース フィールドはNVARCHAR(2000)です。

一部のエントリでは、データベースからメモ帳にコピーして貼り付けると、文字列にこれらの奇妙な文字が表示されます。

コンパイル?分析?&?推奨? デッキ

Firebug では、一連の改行として表示されます。

分析と推奨デッキ","StartDate":"1/19/10","FinishDate":"1/26/10","Duration":6.0,"

コンパイル解析 & おすすめデッキ

更新 ユーザーと話した後、私は彼らがワード文書から HTML フォームへのコピーと貼り付けを使用していることを発見しました。

フォーム自体は、YUI 接続マネージャーを使用して非同期 POST 呼び出し (AJAX) を行い、フォームの値を保存します。データベースは、フォーム フィールドの値をそれに関連付けられているエンコーディングと共に保存しました。

Word には印刷可能ですが、ASCII には印刷できない文字があるようです。これを検出して正しくエンコードする方法はありますか?

4

1 に答える 1

2

これは、引用文字を適切に処理していない場合のようです。行くにはいくつかの方法があります。私がWebサイトのコメントに使用する方法は、SQL、ASPX、およびJavascriptの両方が中断しないように、すべての引用符がシングルとダブルの両方でエンコードされていることを確認することです。私たちの方法は顧客のコメントフィールド用であるため、コンバージョンに乗り遅れています。

Function SafeComment(ByVal strInput)
' Renders Any Comment Codes Harmless And Leaves Them HTML readable In An eMail Or Web Page
' Try: SafeComment("`~!@#$%^&*()_+=-{}][|\'"";:<>?/.,")
    SafeComment = ""
    If Len(strInput) = 0 Then Exit Function
    SafeComment =   Replace(Replace(Replace( _
                    Replace(Replace(Replace( _
                    Replace(Replace(Replace( _
                    Replace(Replace(Replace( _
                        Server.HtmlEncode(Trim(strInput)), _
                    "-", "&#45;"), ":", "&#58;"), "|", "&#124;"), _
                    "`", "&#96;"), "(", "&#40;"), ")", "&#41;"), _
                    "%", "&#37;"), "^", "&#94;"), """", "&#34;"), _
                    "/", "&#47;"), "*", "&#42;"), "'", "&#39;")
End Function

それはきれいではありませんが、それは仕事をします。

于 2010-01-20T22:15:19.750 に答える