私は問題に困惑しています。私が試したトリックのほとんどはうまくいかないようです。問題の概要は次のとおりです。
テーブルを作成し、照合順序を utf8_unicode_ci に設定します。列についても同様です。
フォームが配置されているページには、UTF-8 の文字エンコーディングがあります (
<meta>
タグ内)。フォームは UTF-8 の文字セットを受け入れるように設定されています (<form action="execute.php" method="POST" accept-charset="utf-8">
)Execute.php は を使用してフォーム入力をサニタイズし
htmlspecialchars(@trim($str), ENT_QUOTES, "UTF-8");
、実行しmysql_real_escape_string($str);
ます。データベース接続を UTF-8 でエンコードする必要があることを宣言します (mysql_set_charset('utf-8');
)。値を db に挿入します。データベースの挿入を停止してクエリをエコーすると、通常の出力が得られます。さあ、楽しみが始まります。MySQL の行は、例えば ß が ß に変わるなど、奇妙な文字を表示します。
データベースのデータを取得して、UTF-8 エンコーディングのページに表示すると、文字もごちゃごちゃして見えます (ß)。ただし、ページのエンコーディングを Western ISO に変更すると、文字は問題なく表示されます - ß.
フォームがデータをデータベースに送信するときに問題があるのではないかと疑っています...しかし、正確にどこが間違っていたのかを特定することはできません。