ホームページ >データベース >mysql チュートリアル >utf8mb4 を使用すると絵文字が MySQL データベースに保存されないのはなぜですか?

utf8mb4 を使用すると絵文字が MySQL データベースに保存されないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 01:34:09363ブラウズ

Why Are My Emojis Not Saving in My MySQL Database Using utf8mb4?

MySQL utf8mb4: 絵文字の保存中にエラーが発生しました

utf8mb4 エンコーディングを使用して絵文字を含む名前を MySQL データベースに保存しようとすると、エラーが発生します。この問題は、グローバル設定と特定のデータベースの間のデータベース固有の変数の違いに起因します。

データベース構成の検証

  1. グローバル データベース変数がを使用して、「character_set」に「utf8mb4」、「collat​​ion」に「utf8mb4_unicode_ci」を設定します。 query:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
  1. 関連するデータベースについては、phpMyAdmin 内で同じクエリを使用して、上記の変数もそれぞれ「utf8mb4」および「utf8mb4_unicode_ci」に設定されていることを確認します。

my.cnf構成

my.cnf ファイルを検査して、次の設定が存在することを確認します。

[mysql]
default-character-set = utf8mb4

[mysqld]
...
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

mysqli/PDO 設定

場合mysqli/PDO経由で接続している場合は、次のように設定しますオプション:

$mysqli->set_charset('utf8mb4');

$dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8mb4');

考えられる解決策

SQL ステートメント「SET NAMES utf8mb4;」を実行します。 MySQL セッション内でクライアント、接続、および結果の文字セットを utf8mb4 に設定すると、問題が解決される可能性があります。

以上がutf8mb4 を使用すると絵文字が MySQL データベースに保存されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。