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 |
+--------------------------+----------------------------+
| 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 |
相关文章推荐
- mysql字段类型选择时char和varchar如何选择
- mysql字段类型范围说明:int、bigint、smallint、tinyint,char、varchar、nvarchar
- 解答MySQL字段类型varchar和char最核心的两大疑问
- 【MySQL之字段类型(一)】MySQL中char和varchar的区别,以及varchar最大长度是多少?
- Mysql 创建字段为varchar类型,但是保存中文数据时报1366错误
- mysql字段类型范围说明:int、bigint、smallint、tinyint,char、varchar、nvarchar
- mysql如何选择合适的数据类型1:CHAR与VARCHAR
- 如何varchar类型的字段存储中文汉字(SQL Server 2008/2008 R2/2012)
- 解答MySQL字段类型varchar和char最核心的两大疑问
- Mysql字段数据类型:char与varchar的区别
- MYSQL中字段char类型和varchar类型的区别
- MySQL 字段类型varchar,CHAR,text
- c++里如何用string将中文编码的数字,字母转换成char类型
- MySQL 数据库中的字段类型 varchar 和 char 的主要区别是什么?哪 种字段的查找效率要高,为什么?
- MySql中的CHAR、VARCHAR、TEXT与BLOB类型
- mysql中char,varchar与text类型的区别和选用
- 关于LINUX下如何进入带中文的文件夹的小技巧
- 将所有varchar2字段中byte类型修改成varchar2的char类型
- MySQL 深入剖析 char varchar 类型,有了VARCHAR,为什么还要有CHAR?
- mysql中char,varchar与text类型的区别和选用