2

テキストを追加すると、入力テキストを含むフォームがあります
Un sac à main de femme recèlerait une quantité importante de bactéries

データベースにのみ追加しますUn sac

私はaddslashes、mysql_real_escape_string、htmlspecialcharsなどもUTF-8エンコーディングを使用して試しましたが、それでも文字列全体を挿入することはできません

4

8 に答える 8

2

US 以外の文字列をデータベースに保存するには、次の 3 つの手順がそれぞれ正しく実装されていることを確認する必要があります。

  1. データベース テーブルは、フランス語と互換性のある文字セットに設定する必要があります。将来を見据えて、UTF-8 でテーブルを作成することをお勧めします。詳細については、MySQL のドキュメントを参照してください。
  2. データベース接続は、格納時とクエリ時の両方で適切な文字セットに設定する必要があります。これを行うには、mysqli_set_charset()(または MySQL コネクタが提供するもの) を使用します。
  3. 入力フォームとビュー ページは、正確な文字セットをデータとして提供する必要があります。そのためには、次のヘッダーを設定する必要があります: header('Content-Type: text/html; charset=UTF-8');(別の文字セットを使用している場合は、それに応じて変更してください。)

もちろん、保存と表現に別の文字セットを使用することもできますが、なぜそれをしたいのでしょうか?

また、データベースと HTML を使用する場合は、次のことを考慮する必要があります。

  1. データベースに入るときは、必ずデータをエスケープしてください。またはデータベース コネクタが提供する任意のエスケープ方法を使用します。また、 を使用して接続文字セットを設定しないでください。そうしないと、コネクタ ライブラリがエスケープに使用する文字セットを認識できなくなります。詳細については、Google の「SQL インジェクション」を参照してください。mysqli_real_escape_string()SET NAMES UTF8
  2. を使用して HTMLに変換するときは、必ずデータをエスケープしてください。また、常に正しい文字セットを提供するように注意してください。詳細については、Google の「xss」を参照してください。htmlspecialchars()
于 2013-05-16T08:49:25.310 に答える
0

同じ問題がありました。入力テキストは ANSII ファイルから取得したため、すべての utf8 設定にもかかわらず、UTF8 ではありませんでした。utf8_encode(input_text) で解決しました。

于 2015-03-16T20:02:14.617 に答える
0

これをフォローアップするために、私はdbForge Studioを使用していて、フランス語のテキストを貼り付けただけで、すべての照合/エンコーディングが適切に設定されていました. 私が設定しなかったことの 1 つは、データベースへの接続の実際のエンコーディングです。に設定するとUTF8、すべてが再びうまくいきました。@Janoszenの回答で2位。

于 2014-07-24T18:41:23.557 に答える
-1

私が試してみました

htmlentities()

. .文字列をそのままデータベースに保存します

于 2013-05-16T08:33:52.873 に答える