2011-08-01 8 views
0

私は、ユーザーが情報を入力するテキストエリアを持っています。一部のユーザーは情報に一重引用符と二重引用符を入力し、ページ内で最後に見えるものは一重引用符があると思われるすべての種類の奇妙な文字です。私は関数mysqli_real_escape_string()とtrim()を使って情報を格納し、htmleneties()をPHPで表示するだけです。MysqlまたはPHPが引用符を正しく変換しない

私のデータベース私はすでに文字を見るので、一重引用符が二重引用符に格納されているのはなぜですか?ありがとう!

+0

データベースのエンコーディングとは?出力HTMLのエンコーディングは何ですか? –

+0

dbのエンコーディングは、MySQLのcharset:UTF-8 Unicode(utf8)です。これはHTML Ben

答えて

2

不整合な文字セット。同じキャラクタ・セットがデータベース、データベース接続、データベース表、表の列、ページを処理するときに使用されるコンテンツ・タイプ・ヘッダー、およびページのコンテンツ・タイプのメタタグで使用されていることを確認します。また、PHP文字列関数をマルチバイトエンコーディングで使用することを避けたいのは、iso-8859-1でエンコードされたテキストに対してのみ安全だからです。英語以外の言語を受け入れて表示する予定の場合は、UTF-8を使用しているはずです。

+0

databseにはutf8_general_ciがあり、HTMLにはがあります。同じ権利にする必要がありますか? – Ben

+0

'utf8_general_ci'は照合であり、文字セットではありません。あなたは間違ったことを見ている。 –

0
  • あなたがDB内のutf8エンコーディングを持っていることを確認してください
  • は、あなたが名前

mysql_query("SET NAMES utf8"); 

  • あなたがPHPで文字セットを設定してくださいを設定してください

header("Content-type: text/html;charset: utf-8"); 
+0

私は現在phpmyadminを見ていますが、utf8:utf8_unicode_ci、utf8_general_ciなどがあります。どちらを選ぶべきですか? – Ben

+0

general_ci ..... – genesis

+0

照合はソートのような実際のコンテンツには影響しません。私はあなたがエンコーディングを意味すると思います。 –

関連する問題