記事ディレクトリ
絵文字表現が utf8 エンコーディングで保存されている場合MySQL データベースまたは MariaDB の場合、表示できません。
データベースに入力された絵文字表現が疑問符文字になるのはなぜですか?
絵文字式は 4 バイト文字であり、utf8 文字セットは 1 ~ 3 バイトの文字しかサポートしないため、絵文字式をデータベースに書き込むことはできません。
データベースに入力された絵文字表現がクエスチョン マーク文字になる問題を解決するにはどうすればよいですか?
2 つの解決策があります。
- XNUMX バイト文字をカスタム文字に置き換えて、手動でテキストを入力します。
- 変更する MySQL データベース文字セット、データベース文字セットを utf8 から utf8mb4 に変更し、1 ~ 4 バイト文字をサポートします。
実際、最初の方法は手間がかかりすぎるため、お勧めできません。
MySQL データベースの文字セットを変更する 2 番目の解決策を使用することをお勧めします。
MySQL 5.5.3 バージョンから、データベースは 4 バイトの utf8mb4 文字セットをサポートでき、文字は最大 4 バイトを持つことができるため、より多くの文字セットをサポートでき、絵文字表現も保存できます。
- MySQL 5.5.3 以降では、基本的にシームレスに utf8mb4 文字セットにアップグレードできます。
- 同時に、utf8mb4 は utf8 文字セットと互換性があります。
- utf8 文字のエンコード、位置、および格納は、utf8mb4 にあります。
- utf8 文字セットと同じで、既存のデータに損傷はありません。
のためphpMyAdminの新しく作成されたデータベースに新しく作成されたテーブルの場合、デフォルトの文字エンコードは次のとおりです。Latin1
- このエンコーディングでは、中国語と絵文字の表現を挿入できません。
- データベース文字セットとテーブルの文字セット エンコーディングを utf8mb4 に変更する必要があります。
- その後、MySQL を再起動すると、中国語と絵文字の表現を挿入できます。
MySQL絵文字の問題解決
ステップ1:MySQL 構成ファイル my.cnf を変更します。
- (Windows サーバーは my.ini、Linuxサーバーは my.cnf です)
- my.cnf ファイル、通常は
/etc/mysql/my.cnfポジション。 - CWP コントロール パネルにある my.cnf ファイル
/etc/my.cnfポジション。
見つけたら、次のXNUMXつの部分に次の内容を追加してください▼
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
ステップ2:MySQL データベースを再起動します
service mysqld restart
手順 3: 文字セットを再度確認し、SQL コマンド ラインに ▼ を入力します。
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
次のことを確認してください ▼

以下のSQLコマンドを入力▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
以下のようになっていることを確認▼
+--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+
phpMyAdmin で新しいデータベースを作成したら、次のことを行う必要があります。データベースコードを見る ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
データベースのエンコーディングが異なる場合utf8mb4、データベースの文字セットを次のように変更する必要がありますutf8mb4 。
データベースの文字セットを utf8mb4 に変更するには?
ステップ 1: phpMyAdmin で現在のデータベース名をクリックし、[SQL] をクリックします。
ステップ 2: 次のコマンドを入力して、データベースの文字セットを次のように変更します。utf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
ステップ3:MySQL データベースを再起動します
service mysqld restart
- それでおしまい。
SQL コマンドの例を次に示します。
デフォルトの文字セットとテーブルのすべての文字列を新しい文字セットに変更する ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
テーブルのデフォルト文字セットのみを変更する場合▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
フィールドの文字セットを変更する ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- 如:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
テーブルコードを見る▼
SHOW CREATE TABLE tbl_name;
フィールドコードを見る ▼
SHOW FULL COLUMNS FROM tbl_name;
現在のデータベース コードを表示 ▼
SHOW VARIABLES LIKE 'character_set_%';
- mysql-connector-java ドライバー パッケージは、5.1.13 以降で utf8mb4 のみをサポートします。
Hope Chen Weiliang ブログ ( https://www.chenweiliang.com/ ) 共有「MySQL に絵文字を保存するにはどうすればいいですか? データベースの絵文字表現のクエスチョン マークの問題を入力してください」、これは役に立ちます。
この記事のリンクを共有することを歓迎します。https://www.chenweiliang.com/cwl-26592.html
さらに多くの隠されたトリックのロックを解除するには、Telegram チャンネルにぜひご参加ください。
気に入ったらシェアして「いいね!」してください!あなたのシェアと「いいね!」が私たちの継続的なモチベーションです。