MySQL記憶表情文字
3222 ワード
変更
サーバ側
データベース・プロファイル
1
2
3
4
5
6
7
再起動後、mysqlにログインし、
次に、対応するデータベース・テーブルのutf 8 mb 4に符号化を変更します.
変換データテーブル符号化の文フォーマットは、
クライアント
異なるプログラミング言語を使用する場合、utf 8 mb 4はサポートされず、接続文字列で指定できない場合があります.この場合、接続を取得した後、
たとえば、ThinkPHPフレームワークでは、プロファイルにutf 8 mb 4のデータベース接続文字セットを設定した後(
このときmysqlのプロファイルに
拡張
MySQLのデフォルトでは、中国語の文字を格納できませんが、MySQLのデフォルトで表情文字を格納できないのと同じ理由です.データベース文字の符号化の問題です.
デフォルトでは、MySQLで使用される文字セットはLatinなので、中国語や他の文字は保存できません.
中国語を保存する場合は、MySQLの文字セットを、GBKやUTF-8などの中国語をサポートする文字セットに設定します.一般的にはUTF-8に設定されており、より良い互換性が得られます.
MySQLプロファイル
1
2
3
4
5
mysqldサービスを再起動し、さっきの変更を有効にするデータベースにデータ・テーブルがすでに作成されている場合は、これらのデータ・テーブルの文字セットを変更する必要があります.データ・テーブルが多数ある場合は、データベースとデータをエクスポートし、ライブラリを再構築できます.
1
サーバ側
データベース・プロファイル
/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