テキストを受け取り、サーバーに送信されるフォームがあります。クラシックASPサーバー側とデータベースでフランス語文字 'à'が 'Ã'として読み取られています
ユーザーが 'à'などのフランス語文字を入力すると、Classic ASPコードで 'Ã'と読み込まれ、SQL Server 2005データベースに 'Ã'として格納されます。
他のアクセント記号にも同様の影響があります。何が起こっていますか?
テキストを受け取り、サーバーに送信されるフォームがあります。クラシックASPサーバー側とデータベースでフランス語文字 'à'が 'Ã'として読み取られています
ユーザーが 'à'などのフランス語文字を入力すると、Classic ASPコードで 'Ã'と読み込まれ、SQL Server 2005データベースに 'Ã'として格納されます。
他のアクセント記号にも同様の影響があります。何が起こっていますか?
文字エンコーディングの問題です。どうやらあなたのサーバーとデータベースは、文字セットWindows-1252またはISO-8859-1で構成されており、UTF-8データを受信しているようです。
あなたのサーバーが「charset = iso-8859-1」で終わる値を持つContent-TypeまたはContent-Encodingヘッダーを送信していることを確認する必要があります。
あなたのサーバーはドキュメントの文字セットを送信しないと思います。デフォルト設定がUTF-8に設定されているユーザーは、iso-8859-1(またはWindows-1252)として保存されているUTF-8文字を送信します。データベース。
を意味しました。ファイヤーバグによると、あなたの疑いは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
ヘッダーには、これらのエンコーディングが受け入れられます(他は拒否される可能性があります)。あなたはまだあなたが得るものを見てそれを適切に処理する必要があります。文字セット間に自動変換はありません。 SS2005は取得したビットを保存しますが、Windows(1252)のデフォルトコードページはISO-8859-1で完全には正しく動作しないため、文字列がCP1252でないと伝えられないWindowsクライアントは、困難。 – DaveE
ISO-8859-1とWindows-1252の質問には、同じコードポイントが使用されています。 – AnthonyWJones
私の回答hereを参照して、起こりうることの詳細を確認してください。
フォームのポストで使用されているエンコーディングが受信ページのResponse.CodePageと一致するようにする必要があります。フォーム要素によってaccept-charset属性を設定することにより、フォームによって送信される実際の文字セットを構成できます。デフォルトのaccept-charsetはドキュメントのchar-setです。
正確には、(フォームを含むページと投稿を受信したページの両方で)ASPファイルのコードページをどのように設定していますか?
Response.CharSetの値をフォームページに設定していますか?
Classic ASPまたはASP.NETを意味しますか? –
私はクラシックASP – burnt1ce