私はウェブサイトを持っていて、いくつかのテキストボックスがあります。ユーザーが文字「ë」を含むものを入力すると、次のようになります。
ë
このようにデータベースに保存するにはどうすればよいですか? 私の Web サイトは .NET 上に構築されており、Iam は C# 言語を使用しています。
私はウェブサイトを持っていて、いくつかのテキストボックスがあります。ユーザーが文字「ë」を含むものを入力すると、次のようになります。
ë
このようにデータベースに保存するにはどうすればよいですか? 私の Web サイトは .NET 上に構築されており、Iam は C# 言語を使用しています。
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 つの記事すべてをお読みになり、それが役に立ったらお知らせください。
HtmlEncode
機能が必要ですHtmlDecode
。
SQL Server はë
、その他のローカル文字または「異常な」文字には問題ありませんが、HTML はそうではありません。これは、一部の文字が HTML で特別な意味を持つためです。最良の例はHTML 構文に不可欠な<
or>
ですが、他にもたくさんあります。なぜかë
特別でもあります。そのような文字を表示できるようにするには、HTML として送信する前にエンコードする必要があります。送信とは、ブラウザに送信することも意味します。
そのためë
、ブラウザーで表示されますが、アプリはエンコードされたバージョンでそれを処理しています。これはë
、データベースを含む常にこの形式です。最初にデコードする必要があるためë
、SQL Server に保存する場合。ë
ページに表示する前に、必ずエンコードして戻してë
ください。
これらの関数を使用して、すべてのテキストをそれぞれ保存/表示する前にデコード/エンコードします。それらは特殊文字のみを変換し、それ以外はそのままにします:
string encoded = HttpUtility.HtmlEncode("Noël")
string decoded = HttpUtility.HtmlDecode("Noël")
エンコードされたテキストを操作するもう 1 つの重要な理由は、JavaScript インジェクションです。これは、JavaScript チャンクを編集/メモ ボックスに配置して、他の誰かのブラウザである時点で実行されることを期待して、サイトを混乱させることを意図した攻撃です。UI から取得したすべてのテキストをエンコードすると、これらの JavaScript は実行可能なコードではなくテキストとして扱われるため、決して実行されません。