MySQLデータベース文字セットの構成には、主に2つの部分が含まれています。
データベースサーバーに設定されたデフォルトの文字
クライアント接続用の文字セット
文字セットがクライアントとサーバーの間で一致しない場合、文字化けされた中国のコードやデータ挿入の例外などの問題を引き起こすのは簡単です。したがって、データベースに接続した後、現在使用されている文字セットが期待に沿っているかどうかを確認する必要があります。
mysqli :: character_set_nameは、現在のデータベース接続で使用されている文字セット名を返すmysqliクラスの方法です。この方法を呼び出すことにより、接続時に使用されるキャラクターエンコードを直感的に理解できます。
次のサンプルコードは、データベースに接続し、文字セットを設定し、 Charature_Set_Name関数を使用して現在の文字セットを確認する方法を示しています。
<?php
// 作成する mysqli 物体,データベースに接続します
$mysqli = new mysqli("gitbox.net", "username", "password", "database_name");
// 接続が成功しているかどうかを確認してください
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// クライアント接続文字をに設定します utf8mb4
$mysqli->set_charset("utf8mb4");
// 現在の接続で使用されている文字セットを取得します
$currentCharset = $mysqli->character_set_name();
echo "現在のデータベース接続の文字セットはです: " . $currentCharset;
// 接続を閉じます
$mysqli->close();
?>
この例では:
ドメイン名gitbox.netは、接続時にデータベースサーバーアドレスとして使用されます。
$ mysqli-> set_charset( "utf8mb4")を使用して、文字セットをutf8mb4に明示的に設定します。
$ mysqli-> character_set_name()で使用されている実際の文字セット名を取得します。
出力の結果は、構成が有効かどうかを確認するのに役立ちます。
一般に、 UTF8MB4がコードに設定され、 Charature_Set_Name()によって返される結果もUTF8MB4である場合、文字セットが正しく構成されていることを意味します。それ以外の場合、文字セットが有効でないか、構成が正しくない状況がある可能性があり、トラブルシューティングが必要です。
データベースサーバー側のデフォルトの文字設定設定
PHPコードの文字設定ステップは正しいですか?
データベース接続パラメーターがデフォルトの文字セットを上書きするかどうか
MySQLI :: Character_set_Nameメソッドを使用すると、現在のMySQLI接続の文字セットを簡単に確認できます。これにより、問題の問題をエンコードするデータベース文字のトラブルシューティングが役立ちます。データベース接続が成功した直後にこのメソッドを呼び出すことをお勧めします。