2

私はウェブサイトを持っていて、いくつかのテキストボックスがあります。ユーザーが文字「ë」を含むものを入力すると、次のようになります。

ë

このようにデータベースに保存するにはどうすればよいですか? 私の Web サイトは .NET 上に構築されており、Iam は C# 言語を使用しています。

4

2 に答える 2

4

ASP.Net (サーバー側アプリケーション) と SQL Server はどちらも Unicode 対応です。さまざまな言語とさまざまな文字セットを処理できます。

http://msdn.microsoft.com/en-us/library/39d1w2xf.aspx

内部的には、ASP.NET Web ページの背後にあるコードは、すべての文字列データを Unicode として処理します。ページが応答をエンコードする方法を設定できます。これにより、HTTP ヘッダーの Content-Type 部分に CharSet 属性が設定されます。これにより、ブラウザーは、メタ タグを使用せずに、またはコンテンツから正しいエンコーディングを推測する必要なく、エンコーディングを決定できます。リクエストで送信された情報をページが解釈する方法を設定することもできます。

最後に、ASP.NET がページ自体のコンテンツを解釈する方法、つまり、ディスク上の物理的な .aspx ファイルのエンコーディングを設定できます。ファイル エンコーディングを設定すると、すべての ASP ページでそのエンコーディングを使用する必要があります。Notepad.exe は、現在のシステム ANSI コードページ、UTF-8、または UTF-16 (Unicode とも呼ばれます) でエンコードされたファイルを保存できます。ASP.NET ランタイムは、これら 3 つのエンコーディングを区別できます。物理 ASP.NET ファイルのエンコーディングは、@ Page エンコーディング属性でファイルに指定されているエンコーディングと一致する必要があります。

この記事も役立ちます。

http://support.microsoft.com/kb/893663

この「Joel-on-Software」記事は絶対に読むべきです

3 つの記事すべてをお読みになり、それが役に立ったらお知らせください。

于 2012-04-26T17:10:56.177 に答える
0

HtmlEncode機能が必要ですHtmlDecode

SQL Server はë、その他のローカル文字または「異常な」文字には問題ありませんが、HTML はそうではありません。これは、一部の文字が HTML で特別な意味を持つためです。最良の例はHTML 構文に不可欠な<or>ですが、他にもたくさんあります。なぜかë特別でもあります。そのような文字を表示できるようにするには、HTML として送信する前にエンコードする必要があります。送信とは、ブラウザに送信することも意味します。

そのためë、ブラウザーで表示されますが、アプリはエンコードされたバージョンでそれを処理しています。これは&#235;、データベースを含む常にこの形式です。最初にデコードする必要があるため&#235;、SQL Server に保存する場合。ëページに表示する前に、必ずエンコードして戻して&#235;ください。

これらの関数を使用して、すべてのテキストをそれぞれ保存/表示する前にデコード/エンコードします。それらは特殊文字のみを変換し、それ以外はそのままにします:

string encoded = HttpUtility.HtmlEncode("Noël")
string decoded = HttpUtility.HtmlDecode("No&#235;l")

エンコードされたテキストを操作するもう 1 つの重要な理由は、JavaScript インジェクションです。これは、JavaScript チャンクを編集/メモ ボックスに配置して、他の誰かのブラウザである時点で実行されることを期待して、サイトを混乱させることを意図した攻撃です。UI から取得したすべてのテキストをエンコードすると、これらの JavaScript は実行可能なコードではなくテキストとして扱われるため、決して実行されません。

于 2012-04-26T18:43:33.893 に答える