2

私は自分の問題に似たものを見つけようとしましたが、いつも反対の状況を見つけます...

これが取引です(どんな助けでも大歓迎です):

私のデータベース(innodb)はUTF8に設定されています。基本的に、すべて(サーバー側、クライアント側、データベース、接続など)はUTF8およびUTF8general_ci照合に設定されます。

私が理解しているのは、general_ciでは大文字と小文字が区別されないだけでなく、アクセントも区別されないということです。

phpmyadminで、「a」=「á」のようなクエリを実行するとtrue( "1")になりますが、別のサイトのphpフォームからアクセント付きの名前をクエリしようとすると、単に「0」になります。

質問は、すべてを鈍感にするphpフォームを介して選択を実行するにはどうすればよいですか(近接=近接、ホセ=ホセなど)?

phpヘッダー、「SET NAMES('utf8')」を含め、すべてがUTF8に設定され、それらはすべてmy.cnfに設定されます。...フォームタグにも「accept-charset="utf-8"」があります。 、しかしこれがどのように機能するかです:-「jose」は「jose%」エントリのみを提供します...-JOSÉを検索したい場合、単に「jose」をクエリすることはできません。最後のÉはまさにそれである必要があります。アクセント付きの大文字(josÉやJOSÉなど)ですが、「josé」を選択しても何も見つかりません。

それらはすべてutf8_general_ciにあり、「'%character%'のような変数を表示する」はすべてのUTF8をもたらします...

名前はデータベースに正しく保存され(UTF8文字を使用し、ページで表示している間、値は正しく表示されます)、phpmyadminのSQLを介して「a」と「Ã」を問題なく比較できます。trueを返します。 ..フォームとそのデータベースへの接続を使用すると機能しません...文字は大文字と小文字を区別しませんが、アクセントは大文字と小文字を区別しません(大文字と小文字を区別しない)、なぜですか?

大文字と小文字を区別しない文字列とアクセントのない文字列の両方を「送信」するには、PHPフォームをどのようにする必要がありますか?

4

1 に答える 1

-1

これがそれを引き起こしているかもしれないものの周りのいくつかの一般的なものです:

  1. 念のため、現在の接続(mysql_connectの結果)を保存してから、引数としてmysql_query( "SET NAMES'utf8'"、$ conn_handler);に渡す必要があります。

  2. データベースはUTF8ですが、テーブルと列はどうですか?それらもUTF8ですか?

  3. ビューはBOMなしでUTF8でエンコードされていますか?これにより、「André」に「é」の文字が表示される可能性があります。

どちらも機能しない場合は、データベースへの接続方法を共有してもよろしいですか?

乾杯!

于 2011-03-26T15:57:16.187 に答える