2012-04-26 1 views
2

私はウェブサイトを持ち、テキストボックスはいくつかあります。ユーザーが文字「E」を含んでいる何かに記入した場合、それは次のようになり:「ë」の文字が表示されます

ë 

は、どのように私はそれがデータベースでこれを好きなE保存できますか? 私のウェブサイトはC#言語を使用して.NETとIamで構築されています。

+0

あなたの特殊文字はasciiになります。エラーの原因とならない限り、ほとんどの場合大したことではありません。 –

答えて

4

ASP.Net(サーバー側アプリケーション)とSQL Serverの両方がUnicode対応です。彼らは、異なる言語、異なる文字セットを扱うことができます。

http://msdn.microsoft.com/en-us/library/39d1w2xf.aspx内部的には、ASP.NET Webページの背後にあるコードはUnicodeとして すべての文字列データを処理します。ページが応答をエンコードする方法を設定することができます。これにより、HTTPヘッダーのContent-Type部分のCharSet属性が に設定されます。 これにより、ブラウザはメタタグなしでエンコーディングを判断したり、コンテンツから正しいエンコードを推定するために を抽出する必要がありません。 は、リクエストで送信された情報をページがどのように解釈するかを設定することもできます。

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

また、この記事では、便利です。

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

この "ジョエル・オン・ソフトウェア" の記事は絶対必読

でください。 3つの記事すべてを読んで、それが役立つかどうかをお知らせください。

0

HtmlEncodeおよびHtmlDecodeの機能が必要です。

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

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

これらの関数を使用して、保存/表示する前にすべてのテキストをデコード/エンコードします。彼らは特殊文字を変換し、他のものだけを残します:

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

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

関連する問題