您的位置:首页 > 运维架构 > Linux

c++ linux 如何把 char* 里面的中文 insert进入mysql(相应的字段为varchar类型)

2011-11-13 14:25 656 查看
首先, 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 |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: