c++ linux 如何把 char* 裏面的中文 insert進入mysql(相應的字段爲varchar類型)

首先,  show variables like 'char%';來檢查字符集:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1               |
| character_set_database   | utf8                   |
| character_set_filesystem | binary               |
| character_set_results    | latin1                   |
| character_set_server     | utf8                       |
| character_set_system     | utf8                     |

 

其次,修改方式有兩個:

第一種,單次有效,直接在mysql命令行輸入:set names 'utf8';

第二種,永久有效,在my.cnf配置:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
[mysql.server]
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[client]
default-character-set=utf8

 

原理講解:

mysql內部會有多次字符集的轉換:

第一次mysql客戶端到mysql connection的轉換,第二次mysql connection到mysql server的轉換;

所有上面第一張表的Variable_name經過那兩種配置方式後,就變成了:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                 |
| character_set_database   | utf8                  |
| character_set_filesystem | binary               |
| character_set_results    | utf8                      |
| character_set_server     | utf8                      |

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章