0

最初は、mysql によって設定されたデフォルトの文字セットである latin1_swedish_ci を使用していました。その後、ロシア語などの他の言語で問題が発生しました。そのため、テーブルを照合に変換し、フィールドを utf8_unicode_ci に変換しました。可能なすべての言語をサポートするために utf8_unicode_ci を使用するか、utf8_bin のような別のものを使用するかを確認する必要がありますか?

mysqli を使用している php ファイルの次の問題では、これを設定しました。

if (!mysqli_set_charset($link, "utf8")) {
    echo("Error loading character set utf8: ". mysqli_error($link));
  } 
  else {
    echo("Current character set: ". mysqli_character_set_name($link));
  }

次に、mysqlのみを使用する場所については、以下のようにしました

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); 

私たちが今見つけた問題は、かなり退屈で、見逃してしまうのではないかと心配しています。データベース接続用の設定ファイルのように、この文字設定を設定ファイルのように設定することは可能ですか?

4

1 に答える 1

4

mysql_* と mysqli_* 関数を混在させないでください。一貫性を保つ必要があります。最初にmysqli_を使用し、次にmysql_を使用します。それはうまくいきません!

これは私がそれを行う方法です:

mysqli_set_charset($Handle, 'utf8'); // <- add this too
mysqli_query($Handle, "SET NAMES 'utf8';");
mysqli_query($Handle, "SET CHARACTER SET 'utf8';");
mysqli_query($Handle, "SET COLLATION_CONNECTION = 'utf8_unicode_ci';");
// might be a bit redundant but it's safe :) ... I think :)

次に、適切な UTF8 を指定してください。

于 2012-10-27T15:38:09.130 に答える