2009-07-21 11 views
1

テキストを受け取り、サーバーに送信されるフォームがあります。クラシックASPサーバー側とデータベースでフランス語文字 'à'が 'Ã'として読み取られています

ユーザーが 'à'などのフランス語文字を入力すると、Classic ASPコードで 'Ã'と読み込まれ、SQL Server 2005データベースに 'Ã'として格納されます。

他のアクセント記号にも同様の影響があります。何が起こっていますか?

+0

Classic ASPまたはASP.NETを意味しますか? –

+0

私はクラシックASP – burnt1ce

答えて

2

文字エンコーディングの問題です。どうやらあなたのサーバーとデータベースは、文字セットWindows-1252またはISO-8859-1で構成されており、UTF-8データを受信して​​いるようです。

あなたのサーバーが「charset = iso-8859-1」で終わる値を持つContent-TypeまたはContent-Encodingヘッダーを送信していることを確認する必要があります。

あなたのサーバーはドキュメントの文字セットを送信しないと思います。デフォルト設定がUTF-8に設定されているユーザーは、iso-8859-1(またはWindows-1252)として保存されているUTF-8文字を送信します。データベース。

+0

を意味しました。ファイヤーバグによると、あなたの疑いはiso-8859-1については正しいですが、それはutf-8を受け入れるとも言えるようです。私のサーバがutf-8を受け入れ、クライアントがutf-8でデータを送信しているとしたら、これは問題ではないでしょうか? Firebugでキャプチャされたヘッダ値 Accept-Charset \t ISO-8859-1、utf-8; q = 0.7、*; q = 0.7 – burnt1ce

+0

ヘッダーには、これらのエンコーディングが受け入れられます(他は拒否される可能性があります)。あなたはまだあなたが得るものを見てそれを適切に処理する必要があります。文字セット間に自動変換はありません。 SS2005は取得したビットを保存しますが、Windows(1252)のデフォルトコードページはISO-8859-1で完全には正しく動作しないため、文字列がCP1252でないと伝えられないWindowsクライアントは、困難。 – DaveE

+0

ISO-8859-1とWindows-1252の質問には、同じコードポイントが使用されています。 – AnthonyWJones

0

私の回答hereを参照して、起こりうることの詳細を確認してください。

フォームのポストで使用されているエンコーディングが受信ページのResponse.CodePageと一致するようにする必要があります。フォーム要素によってaccept-charset属性を設定することにより、フォームによって送信される実際の文字セットを構成できます。デフォルトのaccept-charsetはドキュメントのchar-setです。

正確には、(フォームを含むページと投稿を受信したページの両方で)ASPファイルのコードページをどのように設定していますか?

Response.CharSetの値をフォームページに設定していますか?