MySQL記憶表情文字

3222 ワード

変更
サーバ側
データベース・プロファイル/etc/my.cnfを変更し、次の構成を追加してサーバーを再起動します.
1
2
3
4
5
6
7 [mysqld] character - set -server=utf8mb4 collation_server=utf8mb4_unicode_ci init- connect = "SET NAMES utf8mb4"
  [mysql] default - character - set =utf8mb4
  
再起動後、mysqlにログインし、show variables like 'character%';で符号化が正常に変更されたかどうかを確認できます.変更は次のようになります.
mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| 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                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

次に、対応するデータベース・テーブルのutf 8 mb 4に符号化を変更します.ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;
変換データテーブル符号化の文フォーマットは、ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;です.
クライアント
異なるプログラミング言語を使用する場合、utf 8 mb 4はサポートされず、接続文字列で指定できない場合があります.この場合、接続を取得した後、set names utf8mb4を実行してこの問題を解決することができます.
たとえば、ThinkPHPフレームワークでは、プロファイルにutf 8 mb 4のデータベース接続文字セットを設定した後('DB_CHARSET'=>'utf8mb4')、エラーが発生し、この文字セットを使用できないことを示すメッセージが表示されます.
このときmysqlのプロファイルにinit-connect="SET NAMES utf8mb4"が設定されているため、ThinkPHPプロファイルのデータベース文字セットをそのまま空('DB_CHARSET'=>'')に設定すると、データベースに接続した後、サーバは自動的に接続文字セットをutf 8 mb 4に設定し、emojiの表情を書き込み読み取り正常になります.
拡張
MySQLのデフォルトでは、中国語の文字を格納できませんが、MySQLのデフォルトで表情文字を格納できないのと同じ理由です.データベース文字の符号化の問題です.
デフォルトでは、MySQLで使用される文字セットはLatinなので、中国語や他の文字は保存できません.
中国語を保存する場合は、MySQLの文字セットを、GBKやUTF-8などの中国語をサポートする文字セットに設定します.一般的にはUTF-8に設定されており、より良い互換性が得られます.
MySQLプロファイル/etc/my.cnfを変更し、次の構成を追加してサーバーを再起動します.
1
2
3
4
5 [mysqld] character - set -server=utf8
  [mysql] default - character - set =utf8

mysqldサービスを再起動し、さっきの変更を有効にするデータベースにデータ・テーブルがすでに作成されている場合は、これらのデータ・テーブルの文字セットを変更する必要があります.データ・テーブルが多数ある場合は、データベースとデータをエクスポートし、ライブラリを再構築できます.
1 ALTER   TABLE   tbl_name  CONVERT   TO   CHARACTER   SET   utf8