1

データベースに大量のテキストを保存しています。問題は、引用符 (' ' “ ” ではなく " ') を格納しようとすると、データベースからテキストを表示したときに表示されないにもかかわらず、引用符がデータベースに正常に格納されることです。

SQLの照合をutf8_unicode_ciに変更しようとしましたが、まだ変更されていません

(「 」「」ではなく「」) は、正方形の黒いボックス内のクエステン マークに置き換えられます。

列タイプ 照合属性 Null デフォルト 追加アクション

     2  qr_topics   text    utf8_unicode_ci     No  None
4

3 に答える 3

1

htmlentities()表示する前に、データベースのリターンスルーを実行する必要があります。

$results = $pdo->fetchAll();

foreach($results as $result) {
    echo htmlentities($result['fieldQuotesAndOtherGoodies']);
}

これは良い習慣であるだけでなく(特に、異なる文字セットや角かっこを使用する場合、<および>、HTMLタグとして解釈されるため、エンコードする必要があります)、これはセキュリティにとっても非常に重要です。データベースから取得したユーザーデータをエンコードしないと、サイトがXSS(したがってCSRF)攻撃に対して脆弱になる可能性があります。

参考までに:解決策は、配信されたHTMLがブラウザによってUTF-8として解釈されることを保証するメタタグを追加することでした。

<meta charset="UTF-8" />
于 2012-06-16T03:31:49.977 に答える
1

mysql_query('SET CHARACTER SET utf8, NAMES utf8');

それは私のために働いた!

于 2016-05-17T00:14:28.923 に答える
0

htmlentities() を介してコードを挿入してください。取得中に html_entity_decode() を使用します。@PhpMycoder に同意します。文字セット「utf-8」または好きなものを使用しますが、同じものを関数に渡します。

サーバーへの送信中に使用

htmlentities ($_POST['textarea'], ENT_QUOTES, 'utf-8');

and while retriving

html_entity_decode($_POST['textarea'], ENT_QUOTES, 'utf-8');
于 2012-06-24T05:02:57.693 に答える